有人能解释一下replace()在Java中是如何工作的吗?
str1的值:有人能解释一下replace()在Java中是如何工作的吗?,java,function,optimization,replace,Java,Function,Optimization,Replace,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)); 这样做很好 请解释一下替换在
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));
这样做很好
请解释一下替换在Java中是如何工作的。问题是
replace
意味着两种完全不同的东西
在java.lang.String
中,replace
方法的工作原理如下:
haystack.更换(“针”,“找到”)
这意味着:在变量haystack
引用的字符串中查找字符序列“pinder”
,并将它们全部替换为序列“found”
。返回对新形成字符串的引用(因为java.lang.string是不可变的,所以此replace
不会更改调用它的字符串中的任何内容;它只生成新字符串
在java.lang.StringBuilder/Buffer
中,replace
方法的含义完全不同:
buffer.替换(5,7,“你好!”)
这意味着:修改buffer
(因为StringBuilder/buffer是可变的);删除索引5到7中是否存在,然后将Hello!
改为。如果其中有“Why Good Morning!”,则现在改为“Why GHello!d Morning!”
然后,为了方便起见,该方法只返回这个;
例子
我不相信第二种方法行得通,因为没有采用两个参数的方法
StringBuffer.replace
。我不相信第一种方法行得通,因为'9'
不是字符串。String replace(char oldChar,char newChar):它用newChar字符替换所有出现的oldChar字符。例如,“pog pance”。replace('p','d')将返回dog dance。请提供一个自包含的编译代码段。我试图复制您的第一个案例,它为我生成了91419
——正如预期的那样。@JérômeTeisseire但str1是一个StringBuffer,而不是字符串。
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.