我试图只替换字符串中的一个字符。但是每当字符在字符串中出现多次时,所有这些字符都被替换,而我只想要替换特定字符。例如:
String str = "hello world";
str = str.replace(str.charAt(2), Character.toUpperCase(str.charAt(2)));
System.out.println(str);
给出结果:
heLLo worLd
虽然我希望它是:
heLlo world
我能做些什么来实现这个目标?
答案 0 :(得分:0)
您应该使用StringBuilder
代替String
来实现此目标。
答案 1 :(得分:0)
替换将无效,因为它会替换字符串中的所有匹配项。此外, replaceFirst 将无法正常工作,因为它始终会删除 第一次出现。
由于字符串是不可变的,因此无论哪种方式,您都需要始终创建一个新字符串。可以通过以下任一方式完成。
使用子字符串,并手动创建所需的字符串。
int place = 2;
str = str.substring(0,place)+Character.toUpperCase(str.charAt(place))+str.substring(place+1);
将字符串转换为字符数组,并使用index替换所需的任何字符,然后将数组转换回字符串。
答案 2 :(得分:0)
replace(char, char)
将替换所有出现的指定char
,而不仅仅是索引处的char。来自documentation
返回一个新字符串,该字符串是用newChar替换此字符串中所有出现的oldChar而生成的。
您可以执行类似
的操作String str = "hello world";
String newStr = str.substring(0, 2) + Character.toUpperCase(str.charAt(2)) + str.substring(3);
答案 3 :(得分:0)
String str = "hello world";
char[] charArray = str.toCharArray();
charArray[2] = Character.toUpperCase(charArray[2]);
str = new String(charArray);
System.out.println(str);
答案 4 :(得分:0)
此代码也适用
String str = "hello world";
str = str.replaceFirst(String.valueOf(str.charAt(2)),
String.valueOf(Character.toUpperCase(str.charAt(2))));
System.out.println(str);