如何使用JAVA在大写字母的大写字母前插入空格?

时间:2017-06-20 05:53:29

标签: java regex

我有一个字符串"nameOfThe_String"。这里字符串的第一个字母应该是大写字母。所以我用过

String strJobname="nameOfThe_String"; strJobname=strJobname.substring(0,1).toUpperCase()+strJobname.substring(1);

现在,我需要在大写字母之前插入空格。所以,我用了

strJobname=strJobname.replaceAll("(.)([A-Z])", "$1 $2");

但在这里我需要输出为"Name Of The_String"。在'_'之后,我不需要任何空格,即使S也是大写字母。

我该怎么做?请帮帮我。

3 个答案:

答案 0 :(得分:4)

{{1}}

^字符作为方括号中的第一个字符表示:不是此字符。因此,对于第一个括号组,您说:任何不是_的字符。 但请注意,您的正则表达式也可能在连续的大写字母之间插入空格。

答案 1 :(得分:1)

通过环顾四周,你可以使用:

String strJobname="nameOfThe_String";
strJobname = Character.toUpperCase(strJobname.charAt(0)) +
             strJobname.substring(1).replaceAll("(?<!_)(?=[A-Z])", " ");

//=> Name Of The_String

RegEx Demo

答案 2 :(得分:0)

这是一种可以满足您要求的不同方式。

public static void main(String[] args) {

    String input;
    Scanner sc = new Scanner(System.in);
    input = sc.next();
    StringBuilder text = new StringBuilder(input);
    String find = "([^_])([A-Z])";
    Pattern word = Pattern.compile(find);
    Matcher matcher = word.matcher(text);
    while(matcher.find())
        text = text.insert(matcher.end() - 1, " ");

    System.out.println(text);
}