C# 如何同时使用两个标识符拆分字符串

C# 如何同时使用两个标识符拆分字符串,c#,winforms,C#,Winforms,我有一个字符串,我想通过符号'\n'或'\r'将其拆分为子字符串,我们可以使用单个标识符拆分 string[] strsplit = str.Split('\n') ; 但在我的情况下,不确定是'\n'还是'\r' 有谁能告诉我有没有办法像下面提到的方法那样分割字符串 string[] strsplit = str.Split('\n' || '\r') ; 提前感谢并为我糟糕的英语道歉Split方法有重载,它接受字符数组: string[] strsplit = str.Split(new

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

string[] strsplit = str.Split('\n') ;
但在我的情况下,不确定是'\n'还是'\r'

有谁能告诉我有没有办法像下面提到的方法那样分割字符串

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

提前感谢并为我糟糕的英语道歉

Split
方法有重载,它接受字符数组:

string[] strsplit = str.Split(new char[] { '\n', '\r' }) ;
如评论中所述,您现在可以这样做:

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

Split
方法具有重载,该重载接受
char
数组:

string[] strsplit = str.Split(new char[] { '\n', '\r' }) ;
如评论中所述,您现在可以这样做:

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

如果有时行被拆分为有时
\n
、有时
\r
和有时
\r\n
,则可以执行以下操作

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

另一个选项是,如果要显式地包括
环境,则可以使用换行符
\r\n

请注意,这些现在是字符串(使用
而不是


您可以通过将
StringSplitOptions
更改为
StringSplitOptions来更改行跳过行为。如果有时使用
\n
拆分行,有时使用
\r
拆分行,有时使用
\r\n
拆分行,则可以执行以下操作:

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

另一个选项是,如果要显式地包括
环境,则可以使用换行符
\r\n

请注意,这些现在是字符串(使用
而不是


您可以通过改变<代码> StReStRePTOPTIONS/<代码> >代码> StrugStudioSt选项来改变行跳转行为。No.< />代码>

< P>您只想用代码< > \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();
var行=新列表();
使用(var sr=新的StringReader(str)){
弦线;
而((line=sr.ReadLine())!=null){
行。添加(行);
}
}
字符串[]strsplit=lines.ToArray();

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

你说你只想用代码< > 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();
var行=新列表();
使用(var sr=新的StringReader(str)){
弦线;
而((line=sr.ReadLine())!=null){
行。添加(行);
}
}
字符串[]strsplit=lines.ToArray();

当涉及到处理多个空行时,这与dav_i的回答略有不同。这取决于您要查找的内容。

您只需将一个字符数组传递给Split方法即可

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

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

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

此方法在C#2.0中添加了
params
,因此您不再需要
char[]
str.Split('\n','\r')
或干脆
string[]strsplit=str.Split('\n','\r')
该方法的MSDN页面的URL是,如果假设有这样的情况,我需要给标识符“\n\r\r\n”,是否可以给Yes,但是您需要使用不同的重载(带
字符串的重载,而不是
字符的重载)。在您的情况下,它将是
string.Split(string[],StringSplitOptions)
。AdamPorad已发布了上面的链接,请务必查看。此方法已在C#2.0中添加了
params
,因此您不再需要
char[]
str.Split('\n','\r')
或干脆
string[]strsplit=str.Split('\n','\r')
该方法的MSDN页面的URL是,如果假设有这样的情况,我需要给标识符“\n\r\r\n”,是否可以给Yes,但是您需要使用不同的重载(带
字符串的重载,而不是
字符的重载)。在您的情况下,它将是
string.Split(string[],StringSplitOptions)
。AdamPorad已经发布了上面的链接,请务必查看。下面提到的案例我想实施,你能建议我如何实施。。string[]strsplit=str.Split(string[]{“\n”、“\r\r\r\r\r”、“\r\r\r”、“\r\r\r”});-你写的东西就快到了。
string
数组覆盖
Split
需要
string[]
StringSplitOptions
。此外,您不能定义像
string[]
这样的数组,您需要执行
newstring[]
或我选择的较短的
new[]
。下面提到的情况我想实施,你能建议我如何实施吗。。string[]strsplit=str.Split(string[]{“\n”、“\r\r\r\r\r”、“\r\r\r”、“\r\r\r”});-你写的东西就快到了。
string
数组覆盖
Split
需要
string[]
StringSplitOptions
。此外,您不能定义像
string[]
这样的数组,您需要执行
newstring[]
或我选择的较短的
new[]
。如果卡住了,请尝试并返回消息。您的字符串是否使用逐字(@)格式?因为如果使用逐字(@)格式,则无法使用该格式进行拆分。@terrybozzio逐字字符串语法仅与您在代码中编写C#字符串的方式有关,与字符串的实际值无关。字符串本身就是一个字符串。哈哈,是的,我知道,那么