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