如何修复java代码中的ReplaceAll函数

如何修复java代码中的ReplaceAll函数,java,replaceall,Java,Replaceall,我正在尝试使用replace all函数将字符串中第一个字符的所有匹配项替换为另一个字符。但是,当我运行该函数时,不会发生任何更改。我试图以原始字符串的第一个字符为目标,然后执行替换,但没有成功。下面是我的代码片段 public static String charChangeAt(String str, String str2) { //str = x.xy //str2 = d.w String res = str.replaceAll(Character.t

我正在尝试使用replace all函数将字符串中第一个字符的所有匹配项替换为另一个字符。但是,当我运行该函数时,不会发生任何更改。我试图以原始字符串的第一个字符为目标,然后执行替换,但没有成功。下面是我的代码片段

public static String charChangeAt(String str, String str2) {  

    //str = x.xy
    //str2 = d.w

    String res = str.replaceAll(Character.toString(str.charAt(0)), str2);

    return res ;
}  

您的代码将替换与第一个字符匹配的所有字符。如果您的字符串是
abcda
,并且您运行了您的函数,那么它将用您输入的内容替换所有出现的
a
。包括最后一个

为了实现您的目标,您可能不应该使用
replaceAll

您可以使用
StringBuilder

StringBuilder builder = new StringBuilder(str);
myName.setCharAt(0, str2.charAt(0));

你的函数运行得很好,但你可能用错了
对于这些字符串:

String str = "abaca";
String str2 = "x";
如果您这样做:

charChangeAt(str, str2);
这不会影响
str

必须将函数返回的值赋给
str

str = charChangeAt(str, str2);
这将把
str
的值更改为:

"xbxcx"

如果要用另一个字符替换字符串中第一个字符的所有匹配项,可以使用replace而不是replaceAll。下面是代码片段

String str = "x.xy";
String str2 = "d.w";
String res = str.replace(Character.toString(str.charAt(0)), str2);
return res; // will output d.w.d.wy

对我来说,
System.out.println(charChangeAt(“d.dx”,“d.w”)输出:
d.w.d.wx
。肯定是别的地方出了问题。你怎么调用这个方法?我试着在循环中调用它。因此,基本上我在一个字符串数组中循环,并将第一个字符的出现次数更改为所讨论字符串的其他字符。