Разбор значений из строки
Как бы вы проанализировали значения в строке, например, приведенной ниже?
12:40:11 8 5 87
Промежуток между числами меняется, и первое значение - это время. Следующее регулярное выражение не разделяет компонент времени:
str.split("\w.([:]).")
Есть предложения?
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' ]