Java 替换字符串的单个字符
我试图只替换字符串中的一个字符。但是,每当该字符在字符串中多次出现时,所有这些字符都将被替换,而我只希望替换特定的字符。例如:Java 替换字符串的单个字符,java,string,intellij-idea,Java,String,Intellij Idea,我试图只替换字符串中的一个字符。但是,每当该字符在字符串中多次出现时,所有这些字符都将被替换,而我只希望替换特定的字符。例如: String str = "hello world"; str = str.replace(str.charAt(2), Character.toUpperCase(str.charAt(2))); System.out.println(str); 给出了结果: heLLo worLd 虽然我希望它是: heLlo world 要实现此目标
String str = "hello world";
str = str.replace(str.charAt(2), Character.toUpperCase(str.charAt(2)));
System.out.println(str);
给出了结果:
heLLo worLd
虽然我希望它是:
heLlo world
要实现此目标,我可以做些什么?您应该使用
StringBuilder
而不是String
来实现此目标
replace将不起作用,因为它将替换字符串中出现的所有内容。另外,replaceFirst将不起作用,因为它将始终删除
第一次发生
由于字符串是不可变的,所以无论哪种方式,您都需要始终创建一个新字符串。可以通过以下任一方法完成
- 使用子字符串,并手动创建所需的字符串
int place = 2; str = str.substring(0,place)+Character.toUpperCase(str.charAt(place))+str.substring(place+1);
- 将字符串转换为字符数组,并使用索引替换所需的任何字符,然后将数组转换回字符串
replace(char,char)
将替换所有出现的指定的char
,而不仅仅是索引处的char。从
返回一个新字符串,该字符串由newChar替换该字符串中所有出现的oldChar生成
你可以这样做
String str = "hello world";
String newStr = str.substring(0, 2) + Character.toUpperCase(str.charAt(2)) + str.substring(3);
这个代码也可以工作
String str = "hello world";
str = str.replaceFirst(String.valueOf(str.charAt(2)),
String.valueOf(Character.toUpperCase(str.charAt(2))));
System.out.println(str);
有关如何解决此问题的几种方法,请参见此链接:无效,因为位置1处的角色将消失。
String str = "hello world";
str = str.replaceFirst(String.valueOf(str.charAt(2)),
String.valueOf(Character.toUpperCase(str.charAt(2))));
System.out.println(str);