在String中使char大写

时间:2017-12-15 03:51:59

标签: java string for-loop if-statement char

我想制作一个String大写的元音。这是它的方法:

public static String LetterChanges(String str) {

        char[] strChar = str.toCharArray();

        for (int i =0; i < str.length(); i++){
            char ch = str.charAt(i);

            if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'){
                Character.toUpperCase(ch);
                str.replace(strChar[i], ch);
            }
        }
     return str;
}

“if”语句会拾取元音,但我无法弄清楚如何将其设为大写。 IntelliJ表示.toUpperCase和.replace的结果都被忽略了。有人可以解释一下为什么忽略这些方法,也许还可以用这个代码指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

IntelliJ表示忽略这些操作的结果,因为字符串和字符在Java中是不可变的。对它们执行的任何操作的结果需要分配回变量,例如:

ch = Character.toUpperCase(ch);
str = str.replace(strChar[i], ch);

对于实际的程序,它足以循环元音数组,并对每个元音使用String.replace(char old, char new)。该操作将替换字符串中所有出现的元音:

String string = "Whatever string";
char[] vowels = new char[]{'a', 'e', 'i', 'o', 'u'};

for (char vowel : vowels) {
    string = string.replace(vowel, Character.toUpperCase(vowel));
}

System.out.println(string); // WhAtEvEr strIng

答案 1 :(得分:-1)

您的代码不会更新作为输入的原始字符串。 替换方法会修改字符串并返回一个您未分配回输入的字符串。还有 Character.toUppercase(); method返回你必须替换的字符。

public static void main(String[] args) {
    String str = "This is my input string";
    char[] strChar = str.toCharArray();
    for (int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);
        if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
            str = str.replace(strChar[i], Character.toUpperCase(ch));
        }
    }
    System.out.println(str);
}

更简单的方法。

public static void main(String[] args) {
        String input = "This is my input string";
        System.out.println(input.replace("a", "A").replace("e", "E").replace("i", "I").replace("o", "O").replace("u", "U"));
}