Как разбить строку на части
Короткий ответ
split() возвращает массив частей:
void main() {
String[] parts = "red,green,blue".split(",");
IO.println(parts.length);
IO.println(parts[1]);
}Результат:
3
greenСразу в список
Оберните массив в List.of() или Arrays.asList(), чтобы напечатать или обработать его как коллекцию:
void main() {
var colors = List.of("red,green,blue".split(","));
IO.println(colors);
}Результат:
[red, green, blue]По пробелам
Аргумент split() — регулярное выражение. \\s+ означает «один или больше пробельных символов»:
void main() {
String text = " one two\tthree ";
var words = List.of(text.strip().split("\\s+"));
IO.println(words);
}Результат:
[one, two, three]Разделитель с пробелами вокруг
Регулярное выражение может сразу съесть пробелы около запятой:
void main() {
var tags = List.of("java , spring, sql".split("\\s*,\\s*"));
IO.println(tags);
}Результат:
[java, spring, sql]Ограничить число частей
Второй аргумент задаёт максимальное количество частей — остаток строки попадает в последнюю:
void main() {
String[] pair = "name=Anna=admin".split("=", 2);
IO.println(pair[0]);
IO.println(pair[1]);
}Результат:
name
Anna=adminЧастая ошибка
Точка, вертикальная черта и некоторые другие символы в регулярных выражениях особенные. split(".") возвращает пустой массив:
void main() {
IO.println("192.168.0.1".split(".").length);
IO.println("192.168.0.1".split("\\.").length);
IO.println("a|b".split(Pattern.quote("|")).length);
}Результат:
0
4
2Экранируйте такие символы через \\ или Pattern.quote().
Функции из этого ответа
- String.split() — Разбивает строку на массив частей по разделителю.
- Pattern.compile() — Компилирует регулярное выражение в объект Pattern, который можно использовать много раз.
- String.lines() — Разбивает строку на строки по переводам строки и возвращает их потоком.
- String.strip() — Удаляет любые пробельные символы Unicode в начале и в конце строки.