2013-02-27 80 views
-1

我想分割字符串,只要有空格,下一個字符是數字。 例如輸入字符串:字符串分割每當有空格,下一個字符是數字

Golden State 97 Indiana 108 (FINAL) 

應該分裂爲:

string[0]:Golden State 
string[1]:97 
string[2]:Indiana 
string[3]:108 
string[4]:FINAL 

請大家幫我出這一點。 謝謝

+2

它不會分爲「金州」,「87印第安納州」和「108(FINAL)」嗎? – yoozer8 2013-02-27 14:03:30

+0

正則表達式是去這裏的路。你有什麼嘗試?還有最後一塊遺漏'()'符號 - 應該避免特殊字符? – Nogard 2013-02-27 14:03:38

+0

使用正則表達式可能會有更簡單的方法,但您可以將其拆分爲空格字符,然後將它們附加在一起,具體取決於您是否可以將索引解析爲int或不是。 – 2013-02-27 14:04:11

回答

0

我建議使用正則表達式來解析字符串。

這裏是一個我已經快速創建

「^([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

1

如果使用正則表達式

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!)

可能通過分割來完成,但沒有必要。

+0

感謝您的回答。在這裏,如果我的輸入是變化的,因爲我正在通過Feed提供數據。但格式相同 – djain 2013-02-27 16:37:01

0

另一種正則表達式的解決方案。這比其他解決方案更通用一些,因爲輸入格式不固定。

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();