我正在尝试替换字符串中特定下标处的一个字符。
我所做的是:
String myName = "domanokz";
myName.charAt(4) = 'x';
这将给出一个错误。有什么方法可以做到吗?
我正在尝试替换字符串中特定下标处的一个字符。
我所做的是:
String myName = "domanokz";
myName.charAt(4) = 'x';
这将给出一个错误。有什么方法可以做到吗?
当前回答
将String转换为char[],用索引替换字母,然后将数组转换回String。
String myName = "domanokz";
char[] myNameChars = myName.toCharArray();
myNameChars[4] = 'x';
myName = String.valueOf(myNameChars);
其他回答
将String转换为char[],用索引替换字母,然后将数组转换回String。
String myName = "domanokz";
char[] myNameChars = myName.toCharArray();
myNameChars[4] = 'x';
myName = String.valueOf(myNameChars);
我应该注意到的第一件事是charAt是一个方法,使用等号将值赋给它不会做任何事情。如果字符串是不可变的,charAt方法要对字符串对象进行更改,必须接收一个包含新字符的参数。不幸的是,字符串是不可变的。为了修改字符串,我需要使用Petar Ivanov先生建议的StringBuilder。
我同意Petar Ivanov的观点,但最好按照以下方式实施:
public String replace(String str, int index, char replace){
if(str==null){
return str;
}else if(index<0 || index>=str.length()){
return str;
}
char[] chars = str.toCharArray();
chars[index] = replace;
return String.valueOf(chars);
}
这是可行的
String myName="domanokz";
String p=myName.replace(myName.charAt(4),'x');
System.out.println(p);
输出:domaxokz
String是java中不可变的类。任何似乎要修改它的方法总是返回一个经过修改的新字符串对象。
如果您希望操作字符串,请考虑使用StringBuilder或StringBuffer,以防需要线程安全。