logo search
C#, 320 стр

Пример "Дом Джека"

Давайте вернемся к задаче разбора предложения на элементы. В классе string для этого имеется метод Split, который и решает поставленную задачу. Однако у этого метода есть существенный недостаток, - он не справляется с идущими подряд разделителями и создает для таких пар пустые слова. Метод Split класса Regex лишен этих недостатков, в качестве разделителей можно задавать любую пару символов, произвольное число пробелов и другие комбинации символов. Повторим наш прежний пример:

public void TestParsing()

{

string str,strpat;

//разбор предложения - создание массива слов

str = "А это пшеница, которая в темном чулане

хранится," +" в доме, который построил Джек!";

strpat =" +|, ";

Regex pat = new Regex(strpat);

string[] words;

words = pat.Split(str);

int i=1;

foreach(string word in words)

Console.WriteLine("{0}: {1}",i++,word);

}//TestParsing

Регулярное выражение, заданное строкой strpat, определяет множество разделителей. Заметьте, в качестве разделителя задан пробел, повторенный сколь угодно много раз, либо пара символов - запятая и пробел. Разделители задаются регулярными выражениями. Метод Split применяется к объекту pat класса Regex. В качестве аргумента методу передается текст, подлежащий расщеплению. Вот как выглядит массив слов после применения метода Split.

Рис. 15.6.  Регулярные выражения. Пример "Дом Джека"