这是一个非常简单的问题。如果我有一个字符串并且需要.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,而不是两个一起。
答案 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”计为两个换行符。)
示例: