2011-04-11 132 views
3

已经存在类似的问题,但所有这些问题都使用regexen。我正在使用的代码(剥离分隔符):C#拆分字符串但保留分隔符

string[] sentences = s.Split(new string[] { ". ", "? ", "! ", "... " }, StringSplitOptions.None); 

我想在句子中断时分割一段文本并保留句子终止符。我想避免使用正则表达式。可能吗?

+0

可能重复http://stackoverflow.com/questions/521146/c-split-string-but-keep-split-chars – 2011-04-11 17:53:23

+0

有没有什么不能或不想使用正则表达式的理由 – rerun 2011-04-11 17:54:15

+0

有趣。该副本的标题是“C#拆分字符串,但保留拆分字符”。 – 2011-04-11 17:56:54

回答

6

我不相信有这样做的现有功能。但是,您可以使用以下扩展方法。

public static IEnumerable<string> SplitAndKeepSeparators(this string source, string[] separators) { 
    var builder = new Text.StringBuilder(); 
    foreach (var cur in source) { 
    builder.Append(cur); 
    if (separators.Contains(cur)) { 
     yield return builder.ToString(); 
     builder.Length = 0; 
    } 
    } 
    if (builder.Length > 0) { 
    yield return builder.ToString(); 
    } 
} 
+1

这将在“...”上失败。 – jfs 2011-04-11 17:57:57

+0

看来这会打破最后一场? – 2011-04-11 17:58:56

+0

@jfs,@pst哎呀,忘了在最终检查中加上 – JaredPar 2011-04-11 18:00:14

相关问题