C# C语言中的左字符串函数#
返回C#中字符串的第一个单词的最佳方法是什么 基本上,如果字符串是C# C语言中的左字符串函数#,c#,string,C#,String,返回C#中字符串的第一个单词的最佳方法是什么 基本上,如果字符串是“hello world”,我需要得到“hello” 谢谢您可以使用子字符串和索引的组合 var s = "Hello World"; var firstWord = s.Substring(0,s.IndexOf(" ")); 但是,如果输入字符串只有一个单词,那么这将不会给出期望的单词,因此需要一个特殊情况 var s = "Hello"; var firstWord = s.IndexOf(" ") > -1
“hello world”
,我需要得到“hello”
谢谢您可以使用
子字符串
和索引的组合
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;
一种方法是在字符串中查找空格,并使用空格的位置获取第一个单词:
int index = s.IndexOf(' ');
if (index != -1) {
s = s.Substring(0, index);
}
另一种方法是使用正则表达式查找单词边界:
s = Regex.Match(s, @"(.+?)\b").Groups[1].Value;
您可以尝试:
string s = "Hello World";
string firstWord = s.Split(' ').First();
注释是正确的,所以您可以简单地请求First()
元素,因为始终至少有一个元素
有关是使用First()
还是使用FirstOrDefault()
的详细信息,您可以了解更多信息如果只想在空格上拆分,则最有效。但是,为了多样性,这里有另一个版本:
var FirstWord = "Hello World".Split(null, StringSplitOptions.RemoveEmptyEntries)[0];
作为奖励,它还将识别并忽略多个连续的空格字符(实际上,它将从结果中删除前导/尾随空格)
请注意,它也会将符号计算为字母,因此如果您的字符串是Hello,world代码>,它将返回你好,
。如果不需要,则在第一个参数中传递一个分隔符数组
但是,如果你想让它在世界上的每种语言中都100%万无一失,那么它将变得很难……从msdn网站上无耻地窃取()
处理各种不同的空白字符、空字符串和单个单词的字符串
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();
}
私有静态字符串首字(字符串文本)
{
如果(text==null)抛出新的ArgumentNullException(“text”);
var builder=新的StringBuilder();
对于(int index=0;index }不要对所有字符串执行拆分
,将拆分次数限制为2。使用也将count作为参数的重载。使用
Split
将始终返回至少包含一个元素的数组,因此[0]
或先就足够了 我在代码中使用了这个函数。它提供了一个选项,可以选择第一个单词的大写字母,也可以选择每个单词的大写字母
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;
}
}
空格是唯一要分隔单词的字符吗?关于制表符、换行符和回车符呢?扩展cwap的注释:关于标点符号呢?“hello,world”?如果字符串只包含一个单词,我会添加一个特例,例如,如果IndexOf返回-1。轻微改进:使用字符串的重载。Split
具有最大拆分计数,因为您不关心除第一部分以外的所有内容。您不需要FirstOrDefault
,始终至少有一个元素,因此您可以先编写
(即使没有空格,也可以得到整个字符串)。您的解决方案是正确的,不需要“尝试”。为什么要使用Linq?如果总是有一个元素,并且您使用的是第一个,那么只需通过索引器访问它:stringfirstword=s.Split(“”)[0]请注意,最大拆分部分(如果使用)应该是2而不是1:theString.split(new char[]{'','\t'},2).First();
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();
}
string str = "hello world";
string firstWord = str.Split(new[]{' '} , 2).First();
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;
}
}