2009-09-26 2 views
4

Есть ли какой-либо метод в .net, который обертывает фразы с максимальной длиной для каждой строки?Обертывание фраз в .NET

Пример:

Phrase: The quick red fox jumps over the lazy cat 
Length: 20 

Результат:

The quick red fox 
jumps over the lazy 
cat 

ответ

7

Там нет встроенного в методе для этого. Вы можете использовать регулярное выражение:

string text = "The quick brown fox jumps over the lazy dog."; 
int minLength = 1; 
int maxLength = 20; 
MatchCollection lines = Regex.Matches(text, "(.{"+minLength.ToString()+","+maxLength.ToString()+"})(?: |$)|([^ ]{"+maxLength.ToString()+"})"); 
StringBuilder builder = new StringBuilder(); 
foreach (Match line in lines) builder.AppendLine(line.Value); 
text = builder.ToString(); 

Примечание: Я исправил the pangram.

+0

удивительный! благодаря! – Schwertz

+0

+1 Nice - но ToString() или не ToString() в Regex? ;) –

+0

@gt: Если вы объединяете строки с числами, числа будут вставляться в квадрат, а Concat (object []) вызывается вместо Concat (строка []). (Я пропустил один ToString, поэтому я добавил его.) – Guffa

0

Код в этой статье возвращает список строк, но вы должны иметь возможность легко адаптировать его.

C# текст Обертывание с использованием раскола и списка <>

http://bryan.reynoldslive.com/post/Wrapping-string-data.aspx