2017-06-20 59 views
1

我有一個字符串"nameOfThe_String"。這裏字符串的第一個字母應該是大寫字母。所以我用如何在使用JAVA的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是大寫字母。

我該怎麼做?請幫我解決一下這個。

回答

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

^字符作爲方括號中的第一個字符表示:不是這個字符。所以,用第一個支架組說:任何不是_的字符。 但是,請注意您的正則表達式也可能會在連續的大寫字母之間插入空格。

1

隨着查找變通,你可以使用:

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

//=> Name Of The_String 

RegEx Demo

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); 
} 
相關問題