在 String 中将 char 设为大写

Posted

技术标签:

【中文标题】在 String 中将 char 设为大写【英文标题】:Make char uppercase within String 【发布时间】:2018-05-29 06:20:05 【问题描述】:

我想让字符串的元音大写。这是它的方法:

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 的结果都被忽略了。有人可以解释为什么这些方法被忽略,也可以用这段代码为我指明正确的方向吗?

【问题讨论】:

【参考方案1】:

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

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"));

【讨论】:

【参考方案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

【讨论】:

哇,我不敢相信这就是我们所需要的。我现在明白了,字符串和字符基本上需要特殊处理,因为它们是不变的。现在它实际上更有意义了。谢谢你,罗比!!

以上是关于在 String 中将 char 设为大写的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java中将String的第一个字母大写?

在 C 和 C++ 中将 C 字符串转换为大写

在java中使String首字母大写

在c ++中将小写字符更改为大写

有没有一种字符串方法可以在 python 中将首字母缩写词大写?

关于数字金额转换大写金额,sql语句