C# 基于字符的第一次出现拆分字符串
如何根据第一次出现的指定字符拆分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指定
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的答案