Разделить текст на предложения в C#
Я хочу разделить текст на предложения. Предложение заканчивается на (точка) или ? или ! затем следует один или несколько пробелов, а следующее предложение начинается с заглавной буквы.
например:
первое предложение. Второе предложение!
Как я могу это сделать?
4 ответов
какие языки вы хотите поддержать? Например, в тайском языке нет пробелов между словами, а предложения разделены пробелами. Так что, в целом, эта задача очень сложная. Также рассмотрим полезный комментарий Фредрика Мерка.
Итак, сначала вам нужно определить набор правил о том, что такое" предложение". Тогда вы можете использовать одно из предложенных решений.
вы можете разделить регулярное выражение, которое соответствует пробелу, с помощью lookbehind, который ищет Терминаторы предложений:
string[] sentences = Regex.Split(input, @"(?<=[\.!\?])\s+");
это разделится на символы пробела и сохранить Терминаторы в предложениях.
пример:
string input = "First sentence. Second sentence! Third sentence? Yes.";
string[] sentences = Regex.Split(input, @"(?<=[\.!\?])\s+");
foreach (string sentence in sentences) {
Console.WriteLine(sentence);
}
выход:
First sentence.
Second sentence!
Third sentence?
Yes.
попробуйте это (MSDN)
char[] separators = new char[] {'!', '.', '?'};
string[] sentences1 = "First sentence. Second sentence!".Split(separators);
//or...
string[] sentences2 = "First sentence. Second sentence!".Split('!', '.', '?');