Разбор значений из строки
Как бы вы проанализировали значения в строке, например, приведенной ниже?
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' ]