C#通过多个字符简单拆分字符串

时间:2011-05-09 18:24:03

标签: c# regex string

这是一个非常简单的问题。如果我有一个字符串并且需要.Split由多个字符的东西是什么是“正确”或最简单的方法。我可以想到如何用正则表达式来做,但有更简单的方法。我一直在这样做,我觉得这是一个真正的黑客:

text = text .Replace("\r\n\r\n", "~"); 
text = text .Replace("\n\n", "~"); 

string[] splitText = text.Split('~');

原始字符串包含的内容并不重要,但它会是:

  

sometext \ r \ nsomemoretext \ r \ n \ r \ nsometext2 \ r \ n \ r \ nfinalbitoftext

拆分应返回{somtext \ r \ nsomemoretext,sometext2,finalbitoftext

注意:文本的大块可以包含\ r \ n,而不是两个一起。

3 个答案:

答案 0 :(得分:2)

这应该这样做:

char[] delim = {'\r','\n'};
var splitString = str.Split(delim, StringSplitOptions.RemoveEmptyEntries);

编辑:

请尝试使用string[]分隔符,以确保匹配两个\r\n个字符。请尝试以下代码:

string[] delims = { "\r\n\r\n" };
var splitString = str.Split(delims, StringSplitOptions.RemoveEmptyEntries);

答案 1 :(得分:1)

使用正则表达式Split

Regex regex = new Regex("~+");
string[] hands = regex.Split(handsText);

如果您不时需要静态表单,那么最好使用静态表单。如果你经常使用它,例如在循环中,最好使用实例表单(上面)。

同样,您可以使用正则表达式更轻松地替换\ n \ n和\ r \ n \ r \ n。

// note: using static version; above note applies here as well
String replaced = Regex.Replace(value, "(\r\n\r\n|\n\n)+", "~");

答案 2 :(得分:0)

我会用:

var splitted = Regex.Split(input, "(\r\n){2,}|\n{2,}|\r{2,}", RegexOptions.ExplicitCapture);

连续两行(或多个)换行符。

(请注意,使用(\r\n)|\n|\r){2,}不起作用,因为“\ r \ n”计为两个换行符。)

示例:

  • 输入sometext \ r \ nsomemoretext \ r \ n \ r \ n \ nsometext2 \ r \ n \ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n
  • 输出是{sometext \ r \ nsomemoretext,sometext2,finalbitoftext}