left string function in C#
返回C中字符串的第一个单词的最佳方法是什么?
基本上,如果字符串是
谢谢
你可以试试:
1 2 | string s ="Hello World"; string firstWord = s.Split(' ').First(); |
Ohad Schneider的评论是正确的,因此您可以简单地要求
关于是否使用
您可以使用
1 2 | var s ="Hello World"; var firstWord = s.Substring(0,s.IndexOf("")); |
但是,如果输入字符串只有一个单词,则不会给出预期的单词,因此需要特殊情况。
1 2 3 4 | var s ="Hello"; var firstWord = s.IndexOf("") > -1 ? s.Substring(0,s.IndexOf("")) : s; |
一种方法是在字符串中查找空格,并使用空格的位置获取第一个单词:
1 2 3 4 | int index = s.IndexOf(' '); if (index != -1) { s = s.Substring(0, index); } |
另一种方法是使用正则表达式查找单词边界:
1 | s = Regex.Match(s, @"(.+?)\b").Groups[1].Value; |
如果你只想在空格上拆分,那么jamiec的答案是最有效的。但是,为了多样化,这里有另一个版本:
1 | var FirstWord ="Hello World".Split(null, StringSplitOptions.RemoveEmptyEntries)[0]; |
作为一个额外的好处,它还可以识别所有类型的外来空格字符,并忽略多个连续的空格字符(实际上,它将从结果中删除前导/尾随空格)。
注意,它也会把符号算作字母,所以如果字符串是
但如果你想让它在世界上的每一种语言中都100%不受干扰,那么它就会变得很难……
不知羞耻地从msdn网站上被盗(http://msdn.microsoft.com/en-us/library/b873y76a.aspx)
1 2 3 4 5 6 7 8 9 | 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]; } |
不要对所有字符串执行
1 2 |
处理各种不同的空白字符、空字符串和单个单词的字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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(); } |
我在代码中使用了这个函数。它提供了一个选项,要么大写第一个单词,要么每个单词。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public static string FirstCharToUpper(string text, bool firstWordOnly = true) { try { if (string.IsNullOrEmpty(text)) { return text; } else { if (firstWordOnly) { string[] words = text.Split(' '); string firstWord = words.First(); firstWord = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(firstWord.ToLower()); words[0] = firstWord; return string.Join("", words); } else { return System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text.ToLower()); } } } catch (Exception ex) { Log.Exc(ex); return text; } } |
1 2 3 4 5 | string words ="hello world"; string [] split = words.Split(new Char [] {' '}); if(split.Length >0){ string first = split[0]; } |