Если вы ищете решение без использования функциональных возможностей Java String
(т. Е. split
, match
и т. Д.), То поможет следующее:
List<String> splitString(String string) {
List<String> list = new ArrayList<String>();
String token = "";
char curr;
for (int e = 0; e < string.length() + 1; e++) {
if (e == 0)
curr = string.charAt(0);
else {
curr = string.charAt(--e);
}
if (isNumber(curr)) {
while (e < string.length() && isNumber(string.charAt(e))) {
token += string.charAt(e++);
}
list.add(token);
token = "";
} else {
while (e < string.length() && !isNumber(string.charAt(e))) {
token += string.charAt(e++);
}
list.add(token);
token = "";
}
}
return list;
}
boolean isNumber(char c) {
return c >= '0' && c <= '9';
}
Это решение разделит числа«слова», где «слова» - это строки, которые не содержат чисел.Однако, если вы хотите, чтобы только «слова» содержали английские буквы, вы можете легко изменить их, добавив дополнительные условия (например, вызов метода isNumber
) в зависимости от ваших требований (например, вы можете пропустить слова, содержащие не английские буквы).).Также обратите внимание, что метод splitString
возвращает ArrayList
, который позже можно преобразовать в массив String
.