我知道你看过很多像我这样的问题,但我希望我的有点不同。我正在翻译,我想将文本分成句子,但是当我写完这段代码时:
public static string[] GetSentences(string Text)
{
if (Text.Contains(". ") || Text.Contains("? ") || Text.Contains("! "))
return Text.Split(new string[] { ". ", "? ", "! " }, StringSplitOptions.RemoveEmptyEntries);
else
return new string[0];
}
删除了"。","?","!"。我想保留他们我该怎么做。
注意:我想用"分开。 "点和空格,"? "问号和空格......
答案 0 :(得分:16)
简单,先替换它们。我会使用"|"
来提高可读性,但您可能希望使用更具异国情调的内容。
// this part could be made a little smarter and more flexible.
// So, just the basic idea:
Text = Text.Replace(". ", ". |").Replace("? ", "? |").Replace("! ", "! |");
if (Text.Contains("|"))
return Text.Split('|', StringSplitOptions.RemoveEmptyEntries);
我想知道else return new string[0];
,这看起来很奇怪。假设当没有分隔符时你想要返回输入字符串,你应该删除if/else
构造。
答案 1 :(得分:2)
正则表达方式:
return Regex.Split(Text, @"(?<=[.?!])\s+");
因此,您只需将字符串拆分为前面有.
,?
和!
之一的空格。
(?<=[.?!])\s+
<强> Demo 强>