关于c#:分割字符串并仅获取第一个值


Split string and get first value only

我想知道是否有可能使用split来创建一个字符串,该字符串包含用逗号分隔的多个部分,例如:

1
title, genre, director, actor

我只想要第一部分,每个字符串的标题,而不是其余部分?


1
2
string valueStr ="title, genre, director, actor";
var vals = valueStr.Split(',')[0];

vals会给你标题


实际上,有比拆分更好的方法:

1
2
3
4
5
6
public string GetFirstFromSplit(string input, char delimiter)
{
    var i = input.IndexOf(delimiter);

    return i == -1 ? input : input.Substring(0, i);
}

作为扩展方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
public static string FirstFromSplit(this string source, char delimiter)
{
    var i = source.IndexOf(delimiter);

    return i == -1 ? source : source.Substring(0, i);
}

public static string FirstFromSplit(this string source, string delimiter)
{
    var i = source.IndexOf(delimiter);

    return i == -1 ? source : source.Substring(0, i);
}

用法:

1
2
string result ="hi, hello, sup".FirstFromSplit(',');
Console.WriteLine(result); //"hi"


您可以做到:

1
2
3
var str ="Doctor Who,Fantasy,Steven Moffat,David Tennant";

var title = str.Split(',').First();

您也可以这样:

1
2
var index = str.IndexOf(",");
var title = index < 0 ? str : str.Substring(0, index);


这是我设法建立的两个选项,既没有使用var类型的麻烦,也没有使用其他变量的行:

1
2
3
4
5
string f ="aS.".Substring(0,"aS.".IndexOf("S"));
Console.WriteLine(f);

string s ="aS.".Split("S".ToCharArray(),StringSplitOptions.RemoveEmptyEntries)[0];
Console.WriteLine(s);

它得到的是:

enter