如何将字符串拆分为有意义的标记?

时间:2012-03-19 16:34:05

标签: java string parsing

我需要一种更好的方法来分割以下字符串。我不确定如何识别子字符串并将其分配给正确的变量:

  

在曼彻斯特(老特拉福德),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个
  球
  其余]

请建议任何更好的方法。

1 个答案:

答案 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);
...

这假设场地永远不会包含看起来像日期的子字符串。