Java: Split string when an uppercase letter is found

前端 未结 7 983
醉梦人生
醉梦人生 2020-11-27 15:29

I think this is an easy question, but I am not able to find a simple solution (say, less than 10 lines of code :)

I have a String such as \"thisIs

7条回答
  •  眼角桃花
    2020-11-27 15:42

    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})");
    

提交回复
热议问题