有人能解释一下replace()在java中是如何工作的吗?

ssgvzors  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(367)

str1值:

StringBuffer str1="41415"

我计划的一部分。

str1=str1.replace(i,i+1,'9');
str1=str1.replace(j,j+1,'9');

在这种情况下

i=0; j=str1.length-1;

这会把我的整个字符串变成:

str1=99999;

我不明白:

str1= str1.replace(str1.charAt(i),str1.charAt(j));

这样很好。
请解释replace在java中是如何工作的。

13z8s7eq

13z8s7eq1#

问题是 replace 意味着两件完全不同的事情。
java.lang.String ,的 replace 方法如下:

haystack.replace(“针”,“找到”)

这意味着:查找字符序列的每个匹配项 "needle" 在变量引用的字符串中 haystack ,并将它们全部替换为序列 "found" . 返回对新形成的字符串的引用(因为java.lang.string是不可变的,所以 replace 不会改变你调用它的字符串中的任何内容;它只是制造新的弦。
java.lang.StringBuilder/Buffer ,的 replace 方法意味着完全不同的东西:

缓冲区。替换(5,7,“你好!”)

这意味着:修改 buffer (因为stringbuilder/buffer是可变的);删除索引5到7中是否有,然后放入 Hello! 相反。如果你说“为什么早上好!”在那里,你现在有“为什么盖罗!“早上好!”相反。
然后这个方法就可以了 return this; -为了方便。

示例

String x = "big haystack";
x.replace("haystack", "needle");
System.out.println(x);
> big haystack

// calling replace on strings only makes new ones;
// you have to assign the result:

String x = "big haystack";
String y = x.replace("haystack", "needle");
System.out.println(y);
> big needle

StringBuilder z = new StringBuilder();
z.append("big haystack");
z.replace(0, 3, "little");
System.out.println(z);
> little haystack

// Not so with StringBuilder, replace
// mutates the builder itself.

相关问题