Для разделения по нескольким разделителям вы можете использовать оператор регулярного выражения ИЛИ:
String[] tokens = one.split("\\?|\\.|\\!");
Чтобы поставить пробел перед каждым прописным регистром, который вы можете сделать:
String two = "";
for (int i = 0; i < tokens.length; i++) {
String phrase = tokens[i];
String outputString = "";
for (int k = 0; k < phrase.length(); k++) {
char c = phrase.charAt(k);
outputString += Character.isUpperCase(c) ? " " + c : c;
}
two += outputString + " ";
}
two = two.replaceAll("\\s+", " ");
.следующее:
A True Rebel You Are Everyone Was Impressed You'll Do Well To Continue In The Same Spirit
Но вы также можете сделать что-то вроде этого:
String two = "";
for (int k = 0; k < one.length(); k++) {
char c = one.charAt(k);
two += Character.isUpperCase(c) ? " " + c : c;
}
two = two.replaceAll("\\s+", " ");
System.out.println(two);
, который напечатает это:
A True Rebel You Are! Everyone Was Impressed. You'll Do Well To Continue In The Same Spirit?