2015-10-27 3 views
1

Я пытаюсь добавить пробелы между символами в строке в C# ... Любой совет был бы очень признателен .. СпасибоПопытка добавить пробелы между символами в строке в C#

using System; 

namespace nameReverser 
{ 
    class Program{ 

     public static void Main(string[] args) 
     { Console.WriteLine("Magical Name Reverser"); 
      //User enters name 
      Console.WriteLine("Please Enter Your Name:"); 

      string name = Console.ReadLine(); 

      char[] cArray = name.ToCharArray(); 
      string nameReversed = String.Empty; 

      for (int i= cArray.Length - 1; i>-1; i--) 
      { 
       nameReversed +=cArray[i]; 
      } 
      Console.WriteLine("Your name in reverse order is:"); 
      Console.WriteLine(nameReversed); 

     } 
    } 
} 
+0

Могли бы вы предоставить некоторые * образцы * (например, ' "Джон Смит"' -> или ' "ABC" '-> - примечание * отправной *, * trailing * и * двойной * пробел), пожалуйста? –

+0

Вы можете использовать приведенную ниже ссылку и отредактировать код, если вам нужны дальнейшие улучшения. http://volatileread.com/utilitylibrary/snippetcompiler?id=38794 – ambikanair

ответ

2

Вы можете используйте String.Join, чтобы получить новую строку из массива, имеющую одиночное пространство в качестве разделителя. Для того, чтобы распечатать его в обратном порядке, вы можете использовать Array.Reverse() поэтому весь ваш код будет иметь следующий вид:

Console.WriteLine("Magical Name Reverser");  
Console.WriteLine("Please Enter Your Name:"); 
string name = Console.ReadLine(); 
char[] cArray = name.ToCharArray(); 
Array.Reverse(cArray); 
string resultString = String.Join(" ", cArray); 
Console.WriteLine(resultString); 
Console.WriteLine("Your name in reverse order is:"); 
3

Может быть сделано в одном ходу

strResult= String.Join(" ", name.Reverse()); 
0

В дополнение к ответу не-счастливчика, который добавляет пробелы после каждой буквы вы можете также использовать Insert() method строки, чтобы добавить пробел в определенный индекс

Пример:

name = "Rudolf"; 
name.Insert (1, " "); 

Результаты поиска "R udolf"

0

Обычно я бы порекомендовал один из других ответов, если вы хотите только вставить пробелы в строку.

Но в вашем примере кода, так как вы цикл по строке в любом случае, вы можете совместить операцию обращения с операцией вставки пространство:

// .... 
for (int i = cArray.Length - 1; i > -1; i--) 
{ 
    nameReversed += cArray[i] + " "; 
} 
// ... 

еще лучше, как это было предложено в комментариях: если вы собирается добавить в строку несколько раз, рекомендуется использовать StringBuilder:?

StringBuilder reverseBuilder; 
for (int i = cArray.Length - 1; i > -1; i--) 
{ 
    reverseBuilder.Append(cArray[i]); 
    reverseBuilder.Append(' '); 
} 

// ... 

nameReversed = reverseBuilder.ToString(); 
+0

Вы должны использовать StringBuilder, если вы собираетесь изменять строковое значение повторно таким образом. –

+0

Спасибо @PeterMorris, добавил это к ответу. – CompuChip