在 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 设为大写的主要内容,如果未能解决你的问题,请参考以下文章