【发布时间】:2021-01-29 21:53:21
【问题描述】:
如何根据指定字符的第一次出现来拆分 C# 字符串? 假设我有一个带有值的字符串:
101,a,b,c,d
我想把它拆分成
101
a,b,c,d
即第一次出现逗号。
【问题讨论】:
如何根据指定字符的第一次出现来拆分 C# 字符串? 假设我有一个带有值的字符串:
101,a,b,c,d
我想把它拆分成
101
a,b,c,d
即第一次出现逗号。
【问题讨论】:
您可以使用string.Split 指定要返回多少子字符串:
var pieces = myString.Split(new[] { ',' }, 2);
返回:
101
a,b,c,d
【讨论】:
string s = "101,a,b,c,d";
int index = s.IndexOf(',');
string first = s.Substring(0, index);
string second = s.Substring(index + 1);
【讨论】:
您可以使用Substring 分别获取这两个部分。
首先,您使用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 是为了避免包含逗号。
【讨论】:
使用string.Split() 函数。它需要最大值。它将创建的块数。假设您有一个字符串“abc,def,ghi”,并且您在其上调用 Split(),并将 count 参数设置为 2,它将创建两个块“abc”和“def,ghi”。确保您将其命名为 string.Split(new[] {','}, 2),这样 C# 就不会将其与其他重载混淆。
【讨论】:
在 .net Core 中,您可以使用以下内容;
var pieces = myString.Split(',', 2);
返回:
101
a,b,c,d
【讨论】:
Split(',', 2) 触发警告,Visual Studio 要求将2 转换为char。
var pieces = myString.Split(',', 2);
这行不通。重载将不匹配,编译器将拒绝它。
一定是这样的:
char[] chDelimiter = {','};
var pieces = myString.Split(chDelimiter, 2);
【讨论】: