我想分割字符串,只要有空格,下一個字符是數字。 例如輸入字符串:字符串分割每當有空格,下一個字符是數字
Golden State 97 Indiana 108 (FINAL)
應該分裂爲:
string[0]:Golden State
string[1]:97
string[2]:Indiana
string[3]:108
string[4]:FINAL
請大家幫我出這一點。 謝謝
我想分割字符串,只要有空格,下一個字符是數字。 例如輸入字符串:字符串分割每當有空格,下一個字符是數字
Golden State 97 Indiana 108 (FINAL)
應該分裂爲:
string[0]:Golden State
string[1]:97
string[2]:Indiana
string[3]:108
string[4]:FINAL
請大家幫我出這一點。 謝謝
我建議使用正則表達式來解析字符串。
這裏是一個我已經快速創建
「^([A-ZA-Z \ S] +)(\ d +)([A-ZA-Z \ S] +)(\ d +) (。+)$「
這將匹配各個部分,假定它始終處於上述形狀。
閱讀有關MSDN上的RegEx類。括號中的RegEx部分稱爲組。一旦您將字符串與RegEx匹配,您就可以訪問羣組,並且每個羣組都會包含字符串的一部分,例如「金州」。
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx
如果使用正則表達式
var regex = new Regex(@"^(.*) (\d+) (.*) (\d+) \((.*)\)$");
那麼你可以得到你的價值觀作爲
var m = regex.Match("Golden State 97 Indiana 108 (FINAL)");
if (m.Success)
{
var string0 = m.Groups[1].Value; // Golden State
var string1 = m.Groups[2].Value; // 97
var string2 = m.Groups[3].Value; // Indiana
var string3 = m.Groups[4].Value; // 108
var string4 = m.Groups[5].Value; // FINAL
}
(只要沒有隊名的有數字的任何組in!)
你可能通過分割來完成,但沒有必要。
感謝您的回答。在這裏,如果我的輸入是變化的,因爲我正在通過Feed提供數據。但格式相同 – djain 2013-02-27 16:37:01
另一種正則表達式的解決方案。這比其他解決方案更通用一些,因爲輸入格式不固定。
var input = "Golden State 97 Indiana 108 (FINAL)";
var regex = new Regex(@"(?:[a-z][a-z ]*)?[a-z]|\d+", RegexOptions.IgnoreCase);
var values = regex.Matches(input).Cast<Match>().Select(m => m.Value).ToArray();
它不會分爲「金州」,「87印第安納州」和「108(FINAL)」嗎? – yoozer8 2013-02-27 14:03:30
正則表達式是去這裏的路。你有什麼嘗試?還有最後一塊遺漏'()'符號 - 應該避免特殊字符? – Nogard 2013-02-27 14:03:38
使用正則表達式可能會有更簡單的方法,但您可以將其拆分爲空格字符,然後將它們附加在一起,具體取決於您是否可以將索引解析爲int或不是。 – 2013-02-27 14:04:11