反转大小写的Java方法不会反转所有字母

标签 java string uppercase lowercase

我想创建一种方法来反转单词中的大写字母。我遇到的问题是该方法不会反转所有字母。例如,当我输入“nIceToMeEtyoU”时,它会打印“NiCETomEETYou”。它不适用于“o”、第二个“e”和“t”。我只是无法弄清楚代码有什么问题。

public static String reverseCase(String str) {
    char changed;
    String a = str;
    for (int i = 0; i < a.length(); i++) {
        char d = a.charAt(i);
        boolean letter = Character.isUpperCase(d);
        if (letter == true) {
            changed = Character.toLowerCase(d);
        } else {
            changed = Character.toUpperCase(d);
        }
        a = a.replace(d, changed);
    }
    return a;
}

最佳答案

String::replace返回一个带有 的新字符串所有出现 您要替换的字符的更改。
此外,Java 中的字符串是不可变的,这意味着您不能在保持相同字符串的同时替换字符串中的字符。
要替换特定索引处的字符,请参阅 this post

关于反转大小写的Java方法不会反转所有字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63969822/

相关文章:

python - 每 2000 个字符在最近的管道中对文本进行分区

c# - 如何在字符串末尾插入退格

java - 删除空格和大写首字母

ios - 如何查找特定字符在 NSString 中以大写形式出现的次数?

java - 使用 Java 登录 SiteMinder

Java 线程通过按钮暂停和恢复的问题

sql - 如何在存储过程中拆分逗号分隔的字符串?

regex - 用sublime中的空格替换大写字母

java - 为什么数组的负大小不是编译错误而是抛出 java.lang.NegativeArraySizeException

java - java中的棋盘和棋子设计