2009-10-21 76 views
11

我想在我的字符串遇到空格後丟棄字符串中剩餘的字符(可以是任何字符)。例如:
例如。我希望字符串「10 1/2」變成「10」;
目前我使用拆分,但這似乎是大材小用:在C#中空格後丟棄字符串字符串

string TrimMe = "10 1/2"; 
string[] cleaned = TrimMe.Split(new char[] {' '}); 
return string[0]; 

我覺得應該有一個更簡單的方法。

+1

你的方式是簡單而精緻的這一點。從技術上講,這樣做效率低下,但卻是一種「誰該死的關心」的方式。 – MusiGenesis 2009-10-21 14:27:00

回答

10

其他一些選項:

string result = Regex.Match(TrimMe, "^[^ ]+").Value; 
// or 
string result = new string(TrimMe.TakeWhile(c => c != ' ').ToArray()); 

然而,IMO你開始使用更簡單,更易於閱讀。

編輯:這兩個解決方案將處理空字符串,如果沒有找到空格返回原始,並返回一個空字符串,如果它以空格開始。

+0

你的linq答案很聰明,但我認爲你是對的,我會堅持我的分裂解決方案。謝謝。 – 2009-10-21 14:31:02

+0

我同意...... LINQ的答案很聰明。我討厭在生產代碼中看到它。 :) – Randolpho 2009-10-21 14:59:48

11

這應該工作:

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 
+1

+1 - 「角落案例」的加分 – 2009-10-21 14:21:08

+1

雖然不完全確定它是需要的,但看起來像Substring處理長度= 0。我會離開它。 – 2009-10-21 14:25:51

1

拆分可能是你最優雅/最簡單的解決方案。其他選項包括正則表達式和/或解析/詞法分析。兩者都比你提供的例子更復雜。

5

到另一個答案相似,但更簡潔:

int indexSpace = trimMe.IndexOf(" "); 
return trimMe.Substring(0, indexSpace >= 0 ? indexSpace : trimMe.Length); 
7

我喜歡這樣的可讀性:

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

我也是。非常好。 – 2009-10-21 15:35:38

+0

拆分('')不具有First()功能。 – 2012-01-27 15:31:14

+0

@Wanna使用'使用System.Linq;' – 2012-08-16 13:22:56