2012-03-19 42 views
2

我需要一個更好的方式來拆分下面的字符串。我不知道如何識別字符串,並將其分配給正確的變量:如何將字符串拆分爲有意義的標記?

在曼徹斯特(老特拉福德)24/8/1972英格蘭贏得了6個小門[餘下的35個球]

我想分割上面的字符串並將子字符串分配給不同的變量。

Venue --> Manchester (Old Trafford) 
Date --> 24/8/1972 
Result --> England won by 6 wickets [35 balls remaining] 

我試過StringTokenizer,但我覺得這是工作太多了,得到如上的任務,而且它是太複雜了。當我用StringTokenizer我得到了以下字符串:

在 曼徹斯特
(舊
老特拉福德)
24/8/1972
英格蘭
通過
售票窗口
贏得
[35

剩餘]

請建議任何更好的方法來做到這一點。

+0

也許你應該探索一下正則表達式。 – adarshr 2012-03-19 16:36:01

+1

一個示例輸入不符合規範。要麼用簡單的英語說明規範是什麼(輸入遵循什麼樣的模式?)或給出更多的例子,以便我們可以通過實例學習。 – 2012-03-19 16:36:19

回答

3

如果所有字符串都具有相同的格式(場地,以斜槓分隔的日期,結果),則可以使用正則表達式。

Pattern p = Pattern.compile("(.+) (\\d+/\\d+/\\d+) (.+)"); 
Matcher m = p.matcher(record); 
if (!m.matches()) 
    throw new IllegalArgumentException("Invalid record format."); 
String venue = m.group(1); 
String date = m.group(2); 
String result = m.group(3); 
... 

這假設場地永遠不會包含看起來像日期的子字符串。

+0

你向我展示了正則表達式的方式,謝謝你,解決方案很簡短。 – gmhk 2012-03-19 16:54:40