分割字符串并仅获取第二个值

12
我想知道是否可以使用split函数按逗号分隔一个由多个部分组成的字符串,就像这样:

10,12-JUL-16,11,0

我只想要字符串的第二部分,即12-JUL-16,而不是其他部分。
5个回答

39

是的:

var result = str.Split(',')[1];

或者:

var result = str.Split(',').Skip(1).FirstOrDefault();

或(更好的性能-只需要拆分的前三部分):

var result = str.Split(new []{ ',' }, 3).Skip(1).FirstOrDefault();

6

如果您不确定是否有第二项,请使用LINQ的Skip()First()FirstOrDefault()

string s = "10,12-JUL-16,11,0";
string second = s.Split(',').Skip(1).First();

或者,如果你非常确定有第二个项,你可以使用数组访问器:

string second = s.Split(',')[1];

Skip有无参数重载? - Zein Makki
不,它不会 ;) @user3185569 - Patrick Hofman

4
您可以使用String.Split,它有一个重载的方法可以接受最大分割数。
var input = "10,12-JUL-16,11,0"; // input string.

input.Split(new char[]{','},3)[1]

请查看Demo示例。


建议:提供一个实际有效(有第二部分)的演示输入字符串;-) - wischi
4
这不能编译。 - Zein Makki
@user3185569 忘记指定字符数组,已更新,感谢您的提醒。 - Hari Prasad
如果编辑正确的话,谁点了反对的赞可以请把它移除吗? - Hari Prasad
@Shneeg 啊...那是因为我指定的最大分割数是2导致的。我已经更新了,请查看演示。谢谢。 - Hari Prasad

4

可以的:

string[] parts = str.Split(',');

您的第二个部分在parts[1]中。
或者:
string secondPart = str.Split(',')[1];

或者使用Linq:

string secondPart = str.Split(',').Skip(1).FirstOrDefault();
if (secondPart != null)
{
    ...
}
else
{
    ... 
}

您不仅可以使用一个符号来拆分字符串,例如:

string secondPart = str.Split(new[] {',', '.', ';'})[1];

4
这里有一种方法,虽然其他人已经提到过它。
string input = "10,12-JUL-16,11,0";
string[] parts = input.Split(',');
Console.WriteLine(parts[1]);

输出:

12-JUL-16

Demo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接