Из документации:
String[] split(String regex)
- Возвращает: массив строк, вычисленный путем разбиения этой строки вокруг совпадений заданного регулярного выражения
По существу, регулярное выражение используется для определения разделителей во входной строке. Вы можете использовать захват групп и обратных ссылок в своем шаблоне (например, для обходных путей), но, в конечном счете, важно то, что и где соответствует шаблону, потому что это определяет, что входит в возвращаемый массив.
Если вы хотите разделить исходную строку на 7 частей с помощью регулярного выражения, то вы можете сделать что-то вроде этого:
String s = "12-3456";
String[] parts = s.split("(?!^)");
System.out.println(parts.length); // prints "7"
for (String part : parts) {
System.out.println("Part [" + part + "]");
} // prints "[1] [2] [-] [3] [4] [5] [6] "
Это разделяется на утверждение сопоставления нулевой длины (?!^)
, которое находится где угодно, кроме первого символа в строке. Это препятствует тому, чтобы пустая строка была первым элементом в массиве, и завершающая пустая строка уже отброшена, потому что мы используем параметр limit
по умолчанию для split
.
Использование регулярного выражения для получения отдельного символа строки, как это, является излишним. Если у вас всего несколько символов, то наиболее кратким вариантом является использование foreach
на toCharArray()
:
for (char ch : "12-3456".toCharArray()) {
System.out.print("[" + ch + "] ");
}
Это не самый эффективный вариант, если у вас более длинная строка.
Разделение на -
Это также может быть то, что вы ищете:
String s = "12-3456";
String[] parts = s.split("-");
System.out.println(parts.length); // prints "2"
for (String part : parts) {
System.out.print("[" + part + "] ");
} // prints "[12] [3456] "