2014-01-13 2 views
0

Я пытаюсь сделать простую вкладку между словами, используя динамическое количество. Как мне это сделать?Добавьте одно и то же значение в строку несколько раз

Просто так:

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 (source, times));' –

+0

@AlexeiLevenkov: это будет менее эффективно, чем конструктор. –

+0

@TimSchmelter - действительно для одного символа, как в случае с фактическим OP, следует использовать конструктор. –

2

Попробуйте это:

string spacing = new String('\t', tabs); 
Смежные вопросы