如何拆分字符串并保留分隔符?

时间:2014-06-05 12:42:48

标签: c# asp.net string split translation

我知道你看过很多像我这样的问题,但我希望我的有点不同。我正在翻译,我想将文本分成句子,但是当我写完这段代码时:

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];
}

删除了"。","?","!"。我想保留他们我该怎么做。


注意:我想用"分开。 "点和空格,"? "问号和空格......

2 个答案:

答案 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+

Regular expression visualization

<强> Demo