在C#中将文本拆分为句子

我想把文字分成句子。 一个句子以(点)或?结尾 要么 ! 接下来是一个或多个空白字符,下一个句子以大写字母开头。

例如:

第一句话。 第二句话!

我怎样才能做到这一点?

您想支持哪些语言? 例如,在泰语中,单词之间没有空格,句子用空格分隔。 所以,总的来说,这项任务非常复杂。 还要考虑FredrikMörk的有用评论。

所以,首先你需要定义一套关于“句子”的规则。 然后,欢迎您使用建议的解决方案之一。

您可以拆分匹配空格的正则表达式,并使用查找句子终止符的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. 

你试过String.Split()吗? 请在此处查看相关文档

试试这个( MSDN )

 char[] separators = new char[] {'!', '.', '?'}; string[] sentences1 = "First sentence. Second sentence!".Split(separators); //or... string[] sentences2 = "First sentence. Second sentence!".Split('!', '.', '?');