丢弃C#字符串中空格后的字符

丢弃C#字符串中空格后的字符,c#,.net,string,C#,.net,String,遇到空格后,我想丢弃字符串中的剩余字符(可以是任何字符)。 我希望字符串“10 1/2”变成“10” 目前我正在使用Split,但这似乎有些过分: string TrimMe = "10 1/2"; string[] cleaned = TrimMe.Split(new char[] {' '}); return cleaned[0]; 我觉得应该有一个更简单的方法。这应该可以: Int32 indexOfSpace = TrimMe.IndexOf(' '); if (indexOfSpac

遇到空格后,我想丢弃字符串中的剩余字符(可以是任何字符)。
我希望字符串“10 1/2”变成“10”
目前我正在使用Split,但这似乎有些过分:

string TrimMe = "10 1/2";
string[] cleaned = TrimMe.Split(new char[] {' '});
return cleaned[0];
我觉得应该有一个更简单的方法。

这应该可以:

Int32 indexOfSpace = TrimMe.IndexOf(' ');
if (indexOfSpace == 0)
    return String.Empty; // space was first character
else if (indexOfSpace > 0)
    return TrimMe.Substring(0, indexOfSpace);
else
    return TrimMe; // no space found

拆分可能是您最优雅/最简单的解决方案。其他选项包括正则表达式和/或解析/词法分析。两者都比您提供的调用示例更复杂

与另一个答案类似,但更简洁:

int indexSpace = trimMe.IndexOf(" ");
return trimMe.Substring(0, indexSpace >= 0 ? indexSpace : trimMe.Length);
其他一些选择:

string result = Regex.Match(TrimMe, "^[^ ]+").Value;
// or
string result = new string(TrimMe.TakeWhile(c => c != ' ').ToArray());
然而,在我看来,你开始读的东西要简单得多,也更容易阅读


编辑:两种解决方案都将处理空字符串,如果未找到空格,则返回原始字符串,如果以空格开头,则返回空字符串。

为了可读性,我喜欢这样:

trimMe.Split(' ').First();

虽然不完全确定是否需要,但看起来子字符串句柄长度仍然为0。不过我还是不说了。你的方法很简单。从技术上讲,这是低效的,但从某种程度上说,这是“谁在乎”的意思。我想你的意思是“返回字符串[0]”,而不是“返回字符串[0]”。同意这是最简单、可读性最强的解决方案。@redoc-对,我修复了它。谢谢。你的linq答案很聪明,但我认为你是对的,我会坚持我的拆分解决方案。谢谢。我同意。。。LINQ的答案相当聪明。我不想在生产代码中看到它。:)彼此彼此。我不想在生产代码中看到它。此外,我还遇到过这样的情况:字符串中有多个空格,我们需要访问字符串数组的某个索引。聪明的答案,但不是最有效或可读的。Split(“”)没有First()功能。@要使用System.Linq使用
当您的手机包含用空格分隔的名字和姓氏时,这在自动发送电子邮件时非常有用。爱死它了!非常感谢。