C# 基于字符的第一次出现拆分字符串

C# 基于字符的第一次出现拆分字符串,c#,asp.net,.net,string,C#,Asp.net,.net,String,如何根据第一次出现的指定字符拆分C#字符串? 假设我有一个值为的字符串: 101,a,b,c,d 我想把它分成两份 101 这是第一次出现逗号字符。使用string.Split()函数。它将使用它将创建的最大块数。假设您有一个字符串“abc,def,ghi”,并在count参数设置为2时调用Split(),它将创建两个块“abc”和“def,ghi”。确保像string.Split(new[]{','},2)那样调用它,这样C#就不会将它与其他重载混淆。您可以使用string.Split指定

如何根据第一次出现的指定字符拆分C#字符串? 假设我有一个值为的字符串:

101,a,b,c,d
我想把它分成两份

101

这是第一次出现逗号字符。

使用
string.Split()
函数。它将使用它将创建的最大块数。假设您有一个字符串“abc,def,ghi”,并在
count
参数设置为2时调用Split(),它将创建两个块“abc”和“def,ghi”。确保像
string.Split(new[]{','},2)
那样调用它,这样C#就不会将它与其他重载混淆。

您可以使用
string.Split
指定返回多少子字符串:

string s = "101,a,b,c,d";
int index = s.IndexOf(',');
string first =  s.Substring(0, index);
string second = s.Substring(index + 1);
var pieces = myString.Split(new[] { ',' }, 2);
返回:

101
a,b,c,d
101
a,b,c,d

您可以使用
子字符串
分别获取这两个部分

首先,使用
IndexOf
获取第一个逗号的位置,然后将其拆分:

string input = "101,a,b,c,d";
int firstCommaIndex = input.IndexOf(',');

string firstPart = input.Substring(0, firstCommaIndex); //101
string secondPart = input.Substring(firstCommaIndex + 1); //a,b,c,d

在第二部分中,
+1
是为了避免包含逗号。

在.net核心中,您可以使用以下命令:

var pieces = myString.Split(',', 2);
返回:

101
a,b,c,d
101
a,b,c,d
这行不通。重载将不匹配,编译器将拒绝它

因此,它必须是:

char[] chDelimiter = {','};
var pieces = myString.Split(chDelimiter, 2);

@第三,我没有投反对票,但可能是因为它只是代码,没有解释所使用的方法。@第三,我不知道,尽管我认为Grantwiney的答案是最好的。实际上,对于那些无法使用此拆分方法的人来说,这一个答案提供了一个很好的替代Grantwiney答案的方法。(以使用紧凑框架为例)可能是因为如果IndexOf找不到分隔符,它将返回-1。在这种情况下,代码将无法正确拆分字符串。它应该返回整个字符串作为first,但first将为空(或者可能崩溃);如果从未找到逗号,firstCommaIndex可以是-1。
Split(',',,2)
触发警告,Visual Studio要求将
2
转换为
char
。但请参见下面的@sierra的答案