我正在尝试替换字符串中特定下标处的一个字符。
我所做的是:
String myName = "domanokz";
myName.charAt(4) = 'x';
这将给出一个错误。有什么方法可以做到吗?
我正在尝试替换字符串中特定下标处的一个字符。
我所做的是:
String myName = "domanokz";
myName.charAt(4) = 'x';
这将给出一个错误。有什么方法可以做到吗?
当前回答
你可以覆盖一个字符串,如下所示:
String myName = "halftime";
myName = myName.substring(0,4)+'x'+myName.substring(5);
请注意,字符串myName出现在两行中,并且出现在第二行的两侧。
因此,即使字符串在技术上可能是不可变的,在实践中,您可以通过覆盖它们来将它们视为可编辑的。
其他回答
字符串在Java中是不可变的。你不能改变他们。
您需要创建一个替换字符的新字符串。
String myName = "domanokz";
String newName = myName.substring(0,4)+'x'+myName.substring(5);
或者你可以使用StringBuilder:
StringBuilder myName = new StringBuilder("domanokz");
myName.setCharAt(4, 'x');
System.out.println(myName);
String是java中不可变的类。任何似乎要修改它的方法总是返回一个经过修改的新字符串对象。
如果您希望操作字符串,请考虑使用StringBuilder或StringBuffer,以防需要线程安全。
你可以像这样重写同一个字符串
String myName = "domanokz";
myName = myName.substring(0, index) + replacement + myName.substring(index+1);
其中index =要替换的char的索引。 索引+1添加字符串的其余部分
这是可行的
String myName="domanokz";
String p=myName.replace(myName.charAt(4),'x');
System.out.println(p);
输出:domaxokz
我同意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);
}