C# 如何拆分字符串并保留分隔符?
我知道你看到了很多像我一样的问题,但我希望我的问题有点不同。我正在做一个翻译,我想把一篇文章分成几个句子,但当我写下这段代码时:C# 如何拆分字符串并保留分隔符?,c#,asp.net,string,split,translation,C#,Asp.net,String,Split,Translation,我知道你看到了很多像我一样的问题,但我希望我的问题有点不同。我正在做一个翻译,我想把一篇文章分成几个句子,但当我写下这段代码时: public static string[] GetSentences(string Text) { if (Text.Contains(". ") || Text.Contains("? ") || Text.Contains("! ")) return Text.Split(new string[] { ". ", "? ", "! " }
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];
}
它删除了“.”、“?”和“!”。我想留住他们,我怎么才能做到
注意:我想按“.”点和空格“?”分隔问号和空格…简单,先替换它们。为了便于阅读,我将使用
“|”
,但您可能希望使用更具异国情调的内容
// 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返回新字符串[0]代码>,这似乎很奇怪。假设没有需要返回输入字符串的分隔符时,只需删除if/else
构造 Regex方式:
return Regex.Split(Text, @"(?<=[.?!])\s+");
那么你想保存数组中分隔的分隔符吗?我希望delimeters的可能副本带有一个句子也许这很糟糕,但你可以在拆分后获得数组中每个成员的长度,然后按长度拆分。
(?<=[.?!])\s+