我有一个字符串"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
也是大写字母。
我该怎么做?请帮帮我。
答案 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
答案 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);
}