Как я могу разбить строку на значимые токены? - PullRequest
2 голосов
/ 19 марта 2012

Мне нужен лучший способ разбить следующую строку.Я не уверен, как определить подстроку и присвоить ей правильную переменную:

в Манчестере (Олд Траффорд) 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
Англия
вон
по
6
калитки
[35
шары
оставшиеся]

Пожалуйста, предложите любые лучшие способы сделать это.

1 Ответ

3 голосов
/ 19 марта 2012

Если все строки имеют одинаковый формат (место, разделенная косой чертой дата, результат), вы можете использовать регулярное выражение.

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

Это предполагает, что место встречи никогда не будет содержать подстроку, котораявыглядит как свидание.

...