2010-05-31 3 views
3

Как разбить строку из примерно 300 (n) слов в массив из n/30 строк из 30 слов?Разделить длинную строку на массив более коротких строк

+0

@Mark: Я редактировал вопрос для ясности, не стесняйтесь изменить по своему усмотрению. Вектор: - простая в использовании структура данных, например массив. – Meir

ответ

7

Вы можете использовать Regex.Matches:

string[] bits = Regex.Matches(input, @"\w+(?:\W+\w+){0,29}") 
        .Cast<Match>() 
        .Select(match => match.Value) 
        .ToArray(); 

Смотреть это работает онлайн: ideone

+1

Он игнорирует первый символ каждого элемента. –

+0

@Nick Binnet: Я обновил ответ ссылкой на пример, показывающий, что код работает правильно. Не могли бы вы объяснить, что вы подразумеваете под словом «Он игнорирует первый символ каждого элемента»? Я не понимаю, что вы имеете в виду, и на выходе нет никаких «игнорируемых символов». –

+0

жаль, что неправильно понял ваш ответ. Мой плохой, я пытался это для другой цели. –

2

Regex раскол будет иметь смысл, если у вас есть очень большие или очень маленькие из символов, которые могут быть частью ваша строка. Кроме того, вы можете использовать метод Substring класса Струнного, чтобы получить желаемый результат:

 string input = "abcdefghijklmnopqrstuvwxyz"; 
     const int INTERVAL = 5; 

     List<string> lst = new List<string>(); 
     int i = 0; 
     while (i < input.Length) 
     { 
      string sub = input.Substring(i, i + INTERVAL < input.Length ? INTERVAL : input.Length - i); 
      Console.WriteLine(sub); 
      lst.Add(sub); 
      i += INTERVAL; 
     } 
Смежные вопросы