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

时间:2011-02-10 12:43:45

标签: c# text split

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

例如:

第一句话。第二句话!

我该怎么做?

4 个答案:

答案 0 :(得分:29)

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

答案 1 :(得分:5)

试试这个(MSDN

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:4)

你试过String.Split()吗?请参阅有关它的文档here