C#中的左字符串函数

D_D*_*D_D 19 c# string

在C#中返回字符串的第一个单词的最佳方法是什么?

基本上如果字符串是"hello world",我需要得到"hello".

谢谢

ppo*_*zos 47

你可以试试:

string s = "Hello World";
string firstWord = s.Split(' ').First();
Run Code Online (Sandbox Code Playgroud)

Ohad Schneider的评论是正确的,所以你可以简单地询问First()元素,因为总会有至少一个元素.

有关是否使用的更多信息,First()或者FirstOrDefault()您可以在此处了解更多信息

  • 稍微改进:对`String.Split`使用重载,它会占用最大拆分数,因为除了第一部分之外你不关心所有部分. (6认同)
  • 你不需要`FirstOrDefault`,总会有至少一个元素,所以你可以只写`First`(即使没有空格你也会得到整个字符串)。 (3认同)
  • 请注意,最大分割部分(如果使用)应为 2 而不是 1: theString.Split(new char []{ ' ', '\t'}, 2).First(); (2认同)

Jam*_*iec 24

您可以使用的组合SubstringIndexOf.

var s = "Hello World";
var firstWord = s.Substring(0,s.IndexOf(" "));
Run Code Online (Sandbox Code Playgroud)

但是,如果输入字符串只有一个单词,则不会给出预期的单词,因此需要特殊情况.

var s = "Hello";
var firstWord = s.IndexOf(" ") > -1 
                  ? s.Substring(0,s.IndexOf(" "))
                  : s;
Run Code Online (Sandbox Code Playgroud)

  • 如果字符串只包含一个单词,我会添加一个特例,例如**如果**IndexOf**返回-1. (7认同)

Guf*_*ffa 8

一种方法是在字符串中查找空格,并使用空格的位置来获取第一个单词:

int index = s.IndexOf(' ');
if (index != -1) {
  s = s.Substring(0, index);
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用正则表达式来查找单词边界:

s = Regex.Match(s, @"(.+?)\b").Groups[1].Value;
Run Code Online (Sandbox Code Playgroud)