2014-01-13 39 views
0

我试图使用动态ammount在单词之间制作一个简单的选项卡空间。我将如何做到这一点?多次将相同的值添加到字符串中

只要是这样的:

string p1 = keysC[pos]+"="+valsC[pos]; 
int tabs = (60 - p1.Length)/4; 
wr.WriteLine(p1 + ("\t" * tabs) +"//"+comsC[pos]); 
+0

你在问什么?什么不行?预期的结果是什么?这是一个问题还是答案? – Cosmin

+0

附注:不是每个人都有标签设置为4(我相信在大多数情况下,默认实际上是8)。考虑使用空格填充(几乎相同的代码,但在更多情况下可以正确显示)。 –

回答

4

String contructor有出过载。

string p1 = keysC[pos]+"="+valsC[pos]; 
int tabs = (60 - p1.Length)/4; 
wr.WriteLine(p1 + new string('\t', tabs) +"//"+comsC[pos]); 

注意构造函数的第一个参数是char而不是string

2

听起来像是只需要编写一个重复的次数相同的字符串N多

static string RepeatString(string source, int times) { 
    var builder = new StringBuilder(source.Length * times); 
    for (int i = 0; i < times; i++) { 
    builder.Append(source); 
    } 
    return builder.ToString(); 
} 

请注意,如果你只关心重复char\t然后使用@的new string(theChar, theCount)

+0

+1。甚至'的string.join(NULL,Enumerable.Repeat(源,倍));' –

+0

@AlexeiLevenkov:这将是比构造效率较低。 –

+0

@TimSchmelter - 实际上对于单个字符,因为在实际OP的情况下,应该使用构造函数。 –

3
瓦谢的回答功能

您可以使用string constructor

string allTabs = new string('\t', tabs); 
2

试试这个:

string spacing = new String('\t', tabs);