Использование регулярных выражений было бы неплохо здесь. Могу поспорить, что есть способ сделать это тоже, хотя я не являюсь парнем регулярных выражений, поэтому я не могу вам помочь. Тем не менее, есть кое-что, чего вы не можете избежать - что-то, где-то нужно перебрать вашу строку. Вы можете сделать это «по своему усмотрению» следующим образом:
String[] splitOnCapitals(String str) {
ArrayList<String> array = new ArrayList<String>();
StringBuilder builder = new StringBuilder();
int min = 0;
int max = 0;
for(int i = 0; i < str.length(); i++) {
if(Character.isUpperCase(str.charAt(i))) {
String line = builder.toString().trim();
if (line.length() > 0) array.add(line);
builder = new StringBuilder();
}
builder.append(str.charAt(i));
}
array.add(builder.toString().trim()); // get the last little bit too
return array.toArray(new String[0]);
}
Я протестировал его с помощью следующего тестового драйвера:
public static void main(String[] args) {
String test = "3/4 Ton truCk";
String[] arr = splitOnCapitals(test);
for(String s : arr) System.out.println(s);
test = "Start with Capital";
arr = splitOnCapitals(test);
for(String s : arr) System.out.println(s);
}
И получил следующий вывод:
3/4
Ton tru
Ck
Start with
Capital