如何通过同时使用两个标识符来拆分String

时间:2013-07-31 16:24:46

标签: c# winforms

我有一个字符串,我想通过符号'\ n'或'\ r'拆分成子字符串,对于单个标识符拆分,我们可以使用

string[] strsplit = str.Split('\n') ;

但在我的情况下,不确定天气是'\ n'还是'\ r' ..

任何人都可以告诉我有没有办法像下面提到的那样拆分字符串..

string[] strsplit = str.Split('\n' || '\r') ;

先谢谢,对不起我的坏英语

4 个答案:

答案 0 :(得分:5)

Split方法有重载,它接受char

的数组
string[] strsplit = str.Split(new char[] { '\n', '\r' }) ;

如评论中所述,您现在可以这样做:

string[] strsplit = str.Split('\n', '\r') ;

答案 1 :(得分:4)

如果您遇到某些情况,有时您会将某些行拆分为\n,有时会\r,有时会\r\n,您可以执行以下操作

someString.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);

另一个选择是,如果您想明确包含Environment.NewLine\r\n

someString.Split(new[] { "\n", "\r", Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

请注意,这些现在是字符串(使用"代替')。

您可以通过将StringSplitOptions更改为StringSplitOptions.None

来更改直线跳过行为

答案 2 :(得分:0)

您说您只想按\r\n进行拆分,但实际上人们通常也会考虑\r\n,因为这是默认的Windows换行符。如果你也想要,你还需要做一些额外的工作。一种方法是使用StringReader并让它为你工作:

var lines = new List<string>();
using (var sr = new StringReader(str)) {
    string line;
    while ((line = sr.ReadLine()) != null) {
        lines.Add(line);
    }
}
string[] strsplit = lines.ToArray();

当处理多个空行时,这与dav_i的答案略有不同。只取决于你在寻找什么。

答案 3 :(得分:0)

您只需将一组字符传递给Split方法

string[] arr = "Test\rTest\nTest".Split(new[] { '\r', '\n' });