Нужно разделить строку на массив слов, где в качестве разделителей, могут быть любые символы, кроме букв и символов . ! ? ; : ( )
.
Догадываюсь, что тут не обойтись без регулярных выражений, но как их писать пока не знаю, а в интернете инфы по моему вопросу не нашел.
var wordsArray = sentences[i].Split(separators, StringSplitOptions.RemoveEmptyEntries);
Пишу на С#, заранее спасибо.
Вы ставите задачу как "разделители любые, а слово может состоять только из ограниченного набора символов" и эта задача решается намного сложнее, чем "слово может состоять из любых символов, а нужно описать разделители слов".
Давайте по-простому: разделитель слов -- это пробелы и знаки препинания. Всё.
У вас же будет сложнее: в слове могут встретиться дефисы (Иванов-Крамской), цифры (ТОП100), символы разных алфавитов, в том числе умлауты ("Männer") и прочая диакритика и многое, многое другое.
Вернитесь ещё раз к общему описанию своей задачи: "Нужно разделить строку на массив слов" и помедитируйте над тем, что проще описать: набор символов слова или набор символов-разделителей.
Плюс, буквально вчера пробегал такой же вопрос и там давали ссылку на en-so с регуляркой которая вам подойдёт в качестве основы. (Нужны будут например, кавычки ёлочкой)
string[] sentences = Regex.Split(input, @"(?<=[\.!\?])\s+");
Регулярки -- учите, это один из механизмов, который широко используется в разных языках и является тем, что нужно знать каждому программисту.
Но лично я бы пошёл по самому простому пути: регулярки не использовал, тут достаточно именно String.Split с параметром "массив разделителей". В основе регулярных выражений лежат конечные автоматы, это более сложный алгоритм, чем сплит -- и эта сложность здесь излишняя.
var sentence = "Роман «Война и мир» Л.Н. Толстого, написанный в 1869 году являлся...";
char[] separators = new char[] {' ', '.', ',', '!', '?', '»', '«'};
var wordsArray = sentence.Split(separators, StringSplitOptions.RemoveEmptyEntries);
Вывод:
Виртуальный выделенный сервер (VDS) становится отличным выбором
Классический пример: класс Lamp , описывающий электрическую лампочку, с состояниями On (bool on = true) и Off (bool on = false)Я хочу отслеживать значения этой...
Я использую в своем учебном проекте AutoMapper, но мне он кажется неудобным инструментомЯ сделал свою функцию для конвертации данных из ViewModel...