有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在字符串对象的大写字母前插入空格

我需要编写一个程序,其中用户输入一个对象字符串,如“HelloIamYourNeighbor” 并返回“你好,我是你的邻居”

到目前为止,我已经能够将大写字母转换为小写字母,但在大写字母之间插入空格时遇到了问题

for (int i = 0; i < input.length(); i++) {
    if (input.contains("(?=\\p{Lu})")) {
        str.append(" ");
    }
    if (Character.isUpperCase(input.charAt(i)) && i != 0) {
        str.setCharAt(i, Character.toLowerCase(input.charAt(i)));
}
}
System.out.println(str);    

共 (3) 个答案

  1. # 1 楼答案

    假设“str”是StringBuilder或StringBuffer,则需要删除“input.contains”复选框并在其中添加str.append。您还需要将str.setCharAt更改为以下内容:

    if (Character.isUpperCase(input.charAt(i)) && i != 0) {
        str.append(' '); // adds a space
        str.append(Character.toLowerCase(input.charAt(i)); // add lowercase.
    } else { // Not an upper case, so just append it normally.
        // EDIT: Added (char) cast to get the right overload of append.
        str.append((char)input.charAt(i)); 
    }
    

    基本上,它说的是“如果它是大写字母,请附加一个空格,然后是小写值,否则只需按原样附加它。”

  2. # 2 楼答案

    一行:

    string.replaceAll("([A-Z])", " $1");
    

    ()-这是捕获组,与大写字母匹配 它用空格和匹配的字母替换了这个匹配

  3. # 3 楼答案

    我会这样做:

    StringBuilder sb = new StringBuilder();
    for(int i=0; i<string.length(); i++) {
        char c = string.charAt(c);
        if(Character.isUpperCase(c)){
            sb.append(' ');
        }
        sb.append(c);
    }
    String newString = sb.toString();