我正在尝试替换字符串中特定下标处的一个字符。

我所做的是:

String myName = "domanokz";
myName.charAt(4) = 'x';

这将给出一个错误。有什么方法可以做到吗?


当前回答

我同意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";
myName = myName.substring(0, index) + replacement + myName.substring(index+1); 

其中index =要替换的char的索引。 索引+1添加字符串的其余部分

字符串在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转换为char[],用索引替换字母,然后将数组转换回String。

String myName = "domanokz";
char[] myNameChars = myName.toCharArray();
myNameChars[4] = 'x';
myName = String.valueOf(myNameChars);

我同意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);       
}