C#中的左字符串函数

时间:2010-08-31 08:29:11

标签: c# string

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

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

由于

9 个答案:

答案 0 :(得分:41)

您可以尝试:

string s = "Hello World";
string firstWord = s.Split(' ').First();

Ohad Schneider's评论是正确的,因此您可以简单地询问First()元素,因为总会有至少一个元素。

有关是否使用First()FirstOrDefault()的详细信息,您可以了解更多here

答案 1 :(得分:22)

您可以使用SubstringIndexOf的组合。

var s = "Hello World";
var firstWord = s.Substring(0,s.IndexOf(" "));

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

var s = "Hello";
var firstWord = s.IndexOf(" ") > -1 
                  ? s.Substring(0,s.IndexOf(" "))
                  : s;

答案 2 :(得分:8)

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

int index = s.IndexOf(' ');
if (index != -1) {
  s = s.Substring(0, index);
}

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

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

答案 3 :(得分:3)

如果您只想在空格上拆分,answer of Jamiec是最有效的。但是,仅仅为了多样性,这是另一个版本:

var  FirstWord = "Hello World".Split(null, StringSplitOptions.RemoveEmptyEntries)[0];

作为奖励,这也将识别all kinds of exotic whitespace characters,并将忽略多个连续的空格字符(实际上它将从结果中修剪前导/尾随空格)。

请注意,它也会将符号计为字母,因此如果您的字符串为Hello, world!,则会返回Hello,。如果您不需要,则在第一个参数中传递一个分隔符字符数组。

但是,如果你想让它在世界上所有语言中100%万无一失,那么它就会变得艰难......

答案 4 :(得分:2)

从msdn网站(http://msdn.microsoft.com/en-us/library/b873y76a.aspx

无耻地窃取
string words = "This is a list of words, with: a bit of punctuation" +
    "\tand a tab character.";

string [] split = words.Split(new Char [] {' ', ',', '.', ':', '\t' });

if( split.Length > 0 )
{
    return split[0];
}

答案 5 :(得分:1)

处理各种不同的空白字符,空字符串和单个字符串。

private static string FirstWord(string text)
{
    if (text == null) throw new ArgumentNullException("text");

    var builder = new StringBuilder();

    for (int index = 0; index < text.Length; index += 1)
    {
        char ch = text[index];
        if (Char.IsWhiteSpace(ch)) break;

        builder.Append(ch);
    }

    return builder.ToString();
}

答案 6 :(得分:1)

而不是对所有字符串执行Split将您的拆分限制为2 。使用重载也需要计数作为参数。使用String.Split Method (Char[], Int32)

string str = "hello world";
string firstWord = str.Split(new[]{' '} , 2).First();

Split将始终返回包含至少一个元素的数组,因此.[0]First就足够了。

答案 7 :(得分:0)

string words = "hello world";
string [] split = words.Split(new Char [] {' '});
if(split.Length >0){
 string first = split[0];
}

答案 8 :(得分:0)

我在我的代码中使用了这个功能。它提供了大写第一个单词或每个单词的选项。

tbxComments.on('paste input', function () {
    if ($(this).outerHeight() > this.scrollHeight) {
        //alert('inside');
        $(this).height('64')
    }
    while ($(this).outerHeight() < this.scrollHeight + parseFloat($(this).css("borderTopWidth")) + parseFloat($(this).css("borderBottomWidth"))) {
        $(this).height($(this).height() + 1);
        **window.scrollBy(0, 12);**
    }
});