我想在我的字符串遇到空格後丟棄字符串中剩餘的字符(可以是任何字符)。例如:
例如。我希望字符串「10 1/2」變成「10」;
目前我使用拆分,但這似乎是大材小用:在C#中空格後丟棄字符串字符串
string TrimMe = "10 1/2";
string[] cleaned = TrimMe.Split(new char[] {' '});
return string[0];
我覺得應該有一個更簡單的方法。
我想在我的字符串遇到空格後丟棄字符串中剩餘的字符(可以是任何字符)。例如:
例如。我希望字符串「10 1/2」變成「10」;
目前我使用拆分,但這似乎是大材小用:在C#中空格後丟棄字符串字符串
string TrimMe = "10 1/2";
string[] cleaned = TrimMe.Split(new char[] {' '});
return string[0];
我覺得應該有一個更簡單的方法。
其他一些選項:
string result = Regex.Match(TrimMe, "^[^ ]+").Value;
// or
string result = new string(TrimMe.TakeWhile(c => c != ' ').ToArray());
然而,IMO你開始使用更簡單,更易於閱讀。
編輯:這兩個解決方案將處理空字符串,如果沒有找到空格返回原始,並返回一個空字符串,如果它以空格開始。
你的linq答案很聰明,但我認爲你是對的,我會堅持我的分裂解決方案。謝謝。 – 2009-10-21 14:31:02
我同意...... LINQ的答案很聰明。我討厭在生產代碼中看到它。 :) – Randolpho 2009-10-21 14:59:48
這應該工作:
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 - 「角落案例」的加分 – 2009-10-21 14:21:08
雖然不完全確定它是需要的,但看起來像Substring處理長度= 0。我會離開它。 – 2009-10-21 14:25:51
拆分可能是你最優雅/最簡單的解決方案。其他選項包括正則表達式和/或解析/詞法分析。兩者都比你提供的例子更復雜。
到另一個答案相似,但更簡潔:
int indexSpace = trimMe.IndexOf(" ");
return trimMe.Substring(0, indexSpace >= 0 ? indexSpace : trimMe.Length);
我喜歡這樣的可讀性:
trimMe.Split(' ').First();
我也是。非常好。 – 2009-10-21 15:35:38
拆分('')不具有First()功能。 – 2012-01-27 15:31:14
@Wanna使用'使用System.Linq;' – 2012-08-16 13:22:56
你的方式是簡單而精緻的這一點。從技術上講,這樣做效率低下,但卻是一種「誰該死的關心」的方式。 – MusiGenesis 2009-10-21 14:27:00