首页 > 解决方案 > 使用 charAt 将大写字符串转换为小写

问题描述

我想知道以下代码到底有什么问题。我在 if 语句之后的行上出现错误。此代码接受一个包含大写和小写字母的字符串,但在将大写字母转换为小写后返回该字符串。

public class Main {

    public static void main(String[] args) {
        toLowerCase("HeLloWoRlD!");
    }

    private static String toLowerCase(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (Character.isUpperCase(str.charAt(i))) {
                str.charAt(i) = Character.toLowerCase(str.charAt(i));
            }
        }
        return str;
    }

}

标签: javastring

解决方案


str.charAt(i)不能是赋值运算符的左侧。它是方法调用返回的值,您不能分配给它。

此外,Strings 是不可变的。您不能修改 的字符str。您必须String为您的方法创建一个新的返回。

例如:

private static String toLowerCase(String str) {
    StringBuilder sb = new StringBuilder(str.length());
    for (int i = 0; i < str.length(); i++) {
        if (Character.isUpperCase(str.charAt(i))) {
            sb.append (Character.toLowerCase(str.charAt(i)));
        } else {
            sb.append (str.charAt(i));
        }
    }
    return sb.toString();
}

推荐阅读