2016-03-23 1 views
0

Я использую единство и C# и не уверен, как использовать stringbuilder для добавления «/» всех символов X. У меня есть код и вы можете построить строку из массива с приведенным ниже кодом и добавить запятую после каждой строки, но мне нужно добавить «/» после каждой строки xКак добавить каждый X в C# stringbuilder

он должен, например, преобразовать «122342» в "1,2,2,/3,4,2". В настоящее время было бы преобразовать его в «1,2,2,3,4,2» это код, я уже

StringBuilder Builtstring = new StringBuilder(); 
foreach(string griditem in tobuild){ 

    Builtstring.Append(griditem).Append(","); 

} 
built = Builtstring.ToString(); 
+0

Похоже, вы добавляете запятую после каждой строки, а не каждого символа. Также (и, что более важно) вы можете предоставить пример ввода ввода и выборки, чтобы мы могли видеть, как должна выглядеть строка до и после добавления косой черты? –

+0

добавлен образец вывода по запросу. также изменил символ на строку. –

+0

Мой ответ ниже сделает это - однако это закончится символом ',' - вы захотите удалить последний ',' –

ответ

1

Используйте цикл FOR, а затем проверьте, является ли символ фактором какого-либо желаемого символа nTH. Если так, добавьте лишний '/'.

 int x = 2; // your x 
     StringBuilder builtstring = new StringBuilder(); 
     for (int i = 0; i < tobuild.Length; i++) 
     { 
      string item = tobuild[i]; 
      builtstring.Append(item).Append(","); 
      if (i%x==0) { builtstring.Append("/"); } 

     } 
     string built = builtstring.ToString(); 
+0

Это хорошо работает –

0

Вы можете перебрать массив строк, используя for петлю, которая обеспечивает индекс.
Для каждой итерации добавьте текущую строку в StringBuilder в дополнение к ',', если мы еще не достигли последней строки в массиве.
Кроме того, после x строк добавьте '/'. Мы можем знать, что мы достигли строк x с помощью оператора % (modulus).
Обратите внимание, что я запускаю цикл из индекса = 1. Я делаю это потому, что оператор модуля для значения 0 с любым положительным числом даст 0, что добавит символ «/» после первого слова, что-то, обязательно.

static void Insert(StringBuilder b, int x, string[] tobuild) 
{ 
    for(var index = 1; index < tobuild.Length; ++index) 
    { 
     b.Append(tobuild[index]); 

     if(index != tobuild.Length -1) 
     { 
      b.Append(","); 
     } 

     if(0 == index % x) 
     { 
      b.Append("/"); 
     } 
    } 
} 
0

Добавить инструкцию if для оценки персонажа, а затем действовать соответствующим образом.

StringBuilder Builtstring = new StringBuilder(); 
foreach(string griditem in tobuild){ 
if(griditem == 'x') { Builtstring.Append(griditem).Append(@"/"); } 
Builtstring.Append(griditem).Append(","); 

} 
built = Builtstring.ToString(); 

Или если вы действительно хотите считать определенное количество символов перед тем, как положить косую черту, вы можете это сделать.

int count = 10; 
int position = 0; 
StringBuilder Builtstring = new StringBuilder(); 
foreach(string griditem in tobuild){ 
if(position == count) { Builtstring.Append(griditem).Append(@"/"); position = 0; } 
else{Builtstring.Append(griditem).Append(","); position++;}} 
built = Builtstring.ToString(); 

 Смежные вопросы

  • Нет связанных вопросов^_^