我需要一种更好的方法来分割以下字符串。我不确定如何识别子字符串并将其分配给正确的变量:
在曼彻斯特(老特拉福德),1972年8月24日英格兰以6个小门赢得[剩余35球]
我想拆分上面的字符串并将子字符串分配给不同的变量。
Venue --> Manchester (Old Trafford)
Date --> 24/8/1972
Result --> England won by 6 wickets [35 balls remaining]
我尝试了StringTokenizer
,但我觉得如上所述完成任务太过分了,而且太复杂了。当我使用StringTokenizer
时,我得到了以下子串:
在 曼彻斯特
(老
特拉福德)
24/8/1972
英格兰
赢得
通过
6
售票窗口
[35个
球
其余]
请建议任何更好的方法。
答案 0 :(得分: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);
...
这假设场地永远不会包含看起来像日期的子字符串。