在C#中返回字符串的第一个单词的最佳方法是什么?
基本上如果字符串是"hello world"
,我需要获得"hello"
。
由于
答案 0 :(得分:41)
您可以尝试:
string s = "Hello World";
string firstWord = s.Split(' ').First();
Ohad Schneider's评论是正确的,因此您可以简单地询问First()
元素,因为总会有至少一个元素。
有关是否使用First()
或FirstOrDefault()
的详细信息,您可以了解更多here
答案 1 :(得分:22)
您可以使用Substring
和IndexOf
的组合。
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);**
}
});