Разобрать значения из строки - PullRequest
6 голосов
/ 22 июня 2010

Как бы вы проанализировали значения в строке, например, приведенные ниже?

12:40:11  8    5                  87

Разрыв между числами варьируется, и первое значение - это время. Следующее регулярное выражение не разделяет компонент времени:

str.split("\\w.([:]).")

Есть предложения?

Ответы [ 2 ]

9 голосов
/ 22 июня 2010

Регулярное выражение \s+ соответствует одному или нескольким пробелам, поэтому оно split принимает 4 значения:

"12:40:11", "8", "5", "87"

В качестве строкового литерала Java этот шаблон имеет вид "\\s+".

Если вы хотите получить все 6 чисел, то вы также хотите разделить на :, поэтому шаблон равен \s+|:.В качестве строкового литерала Java это "\\s+|:".

Ссылки


Вкл. Scanner

Вместо использования String.split, вы также можете использовать java.util.Scanner и useDelimiter то же самое, что вы использовали бы для split.Преимущество состоит в том, что он имеет int nextInt(), который можно использовать для извлечения чисел в виде int (если это действительно то, что вас интересует).

Похожие вопросы

2 голосов
/ 22 июня 2010

См. Шаблон документа и String API .

Использование

str.split("\\s+");

даст

[ '12:40:11', '8', '5', '87' ]

или

str.split("\\s+|:");

должен дать

[ '12', '40', '11', '8', '5', '87' ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...