Разбор значений из строки


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

12:40:11  8    5                  87
Промежуток между числами меняется, и первое значение - это время. Следующее регулярное выражение не разделяет компонент времени:
str.split("\w.([:]).")

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

2 6

2 ответа:

Регулярное выражение \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 (Если это действительно то, что вас интересует).

Связанные вопросы

Смотрите Pattern doc и String API.

Используя

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

Уступит

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

Или

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

Должен уступить

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