You may use a regexp with zero-width positive lookahead - it finds uppercase letters but doesn't include them into delimiter:
String s = "thisIsMyString";
String[] r = s.split("(?=\p{Upper})");
Y(?=X)
matches Y
followed by X
, but doesn't include X
into match. So (?=\p{Upper})
matches an empty sequence followed by a uppercase letter, and split
uses it as a delimiter.
See javadoc for more info on Java regexp syntax.
EDIT: By the way, it doesn't work with thisIsMyüberString
. For non-ASCII uppercase letters you need a Unicode uppercase character class instead of POSIX one:
String[] r = s.split("(?=\p{Lu})");
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…