Как разделить строку на части?

Рейтинг: 2Ответов: 2Опубликовано: 17.04.2015

Есть строка

string s = "Я пошел гулять, но на улице шел дождь!"

Как с помощью функции Split() разделить строки по "ничему", т.е. чтобы в результате кроме отдельных слов, отдельно имелись еще и знаки препинания?:

Ответы

▲ 4Принят
using System.Text.RegularExpressions;
var words = Regex.Split("Я пошел гулять, но на улице шел дождь!", @"\b\s*").Where(s => s!="").ToArray();
Console.WriteLine(String.Join("\n", words));

 Изменение для примера с д'Артаньяном (многоточие получается одним знаком):

using System.Text.RegularExpressions;
var words = Regex.Split("Как-то раз д'Артаньян в году 1633-1644...", @"(?![-'])(?<![-'])\b\s*").Where(s => s!="").ToArray();
Console.WriteLine(String.Join("\n", words));
▲ 1

Как-то так, правда без Split

using System.Text.RegularExpressions;

string tmp = @"Как-то раз д'Артаньян в году 1633-1644...";
Regex r = new Regex(@"([\w'-]+)|([!?.,])");
var result = r.Matches(tmp);

Подходит к обоим вышеуказанным примерам