2014-01-23 3 views
4

Я хочу вставить новый символ строки (\ n) после 9 слов в моей строке, чтобы строка после 9-го слова находилась в следующей строке.Вставить символ новой строки после определенного количества слов

строка новой строки = «Как вставить символ новой строки после девятого слова (здесь) строки таким образом, чтобы оставшаяся строка в следующей строке»

Stucked здесь:

foreach (char x in newline) 
{ 
    if (space < 8) 
    {      
     if (x == ' ') 
     { 
      space++; 
     } 
    } 

} 

Не знаю почему я застрял. Его довольно просто я знаю.
Если возможно, покажите любой другой простой способ.

Спасибо!

Примечание: Найден ответ для себя. Дано мной ниже.

+2

код, который вы включили не делать то, что вы говорите, что вы пытаетесь достичь, он рассчитывает только пространства. Пожалуйста, укажите полный код вашей попытки. Кроме того, просьба указать более подробное описание ошибок/проблем, с которыми вы сталкиваетесь, чтобы мы могли помочь вам лучше. Обычно такие вопросы, которые требуют от нас «плз дать мне кодз!». будут закрыты. –

ответ

4

Это один из способов:

List<String> _S = new List<String>(); 
var S = "Your Sentence".Split().ToList(); 
for (int i = 0; i < S.Count; i++) { 
    _S.add(S[i]); 
    if ((i%9)==0) { 
     _S.add("\r\n");  
    } 
} 
+1

+1 для использования оператора '%'. Это настолько недооценено. –

12

Для чего это стоит, вот LINQ один вкладыш:

string newline = "How to insert newline character after ninth word of(here) the string such that the remaining string is in next line"; 
string lines = string.Join(Environment.NewLine, newline.Split() 
    .Select((word, index) => new { word, index}) 
    .GroupBy(x => x.index/9) 
    .Select(grp => string.Join(" ", grp.Select(x=> x.word)))); 

Результат:

How to insert newline character after ninth word of(here) 
the string such that the remaining string is in 
next line 
+0

Что делать, если нам нужно вставить две последовательные строки новой строки? –

+0

Тогда используйте 'string.Join (Environment.NewLine + Environment.NewLine, ...' вместо –

+0

Вы рок. Thanx много .. –

1

Использование StringBuilder как:

string newline = "How to insert newline character after ninth word of(here) the string such that the remaining string is in next line"; 
StringBuilder sb = new StringBuilder(newline); 
int spaces = 0; 
int length = sb.Length; 
for (int i = 0; i < length; i++) 
{ 
    if (sb[i] == ' ') 
    { 
     spaces++; 
    } 
    if (spaces == 9) 
    { 
     sb.Insert(i, Environment.NewLine); 
     break; 
     //spaces = 0; //if you want to insert new line after each 9 words 
    } 

} 

string str = sb.ToString(); 

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

0

Вы пробовали Environment.NewLine вставляете? Вы можете также использовать String.split (»«), чтобы получить массив всех слов КСТАТИ ...

0
string modifiedLine=""; 
int spaces=0; 
foreach (char value in newline) 
{ 
    if (value == ' ') 
    { 
     spaces++; 
     if (spaces == 9) //To insert \n after every 9th word: if((spaces%9)==0) 
     { 
      modifiedLine += "\n"; 
     } 
     else 
      modifiedLine += value; 
    } 
    else 
    { 
     modifiedLine += value; 
    }     
} 
+0

Это просто вставляет один новый символ линии после 9-го слова и не после каждого девятого слова, было бы желательно? Также, если бы я использовал цикл, я бы использовал 'StringBuilder' вместо строковой конкатенации, которая менее эффективна. –

+0

для этого мы могли бы иметь: if ((пробелы% 9) == 0) –

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