Java 字符串生成器替换字符串中偶数索引处的元素
我试图用ASCII值替换字符串中的偶数。我正在使用StringBuilder替换方法,从每次迭代的索引开始,以相同的索引结束,然后用ASCII值替换该值。出于某种原因,replace方法没有将索引处的元素替换为ASCII值Java 字符串生成器替换字符串中偶数索引处的元素,java,string,stringbuilder,Java,String,Stringbuilder,我试图用ASCII值替换字符串中的偶数。我正在使用StringBuilder替换方法,从每次迭代的索引开始,以相同的索引结束,然后用ASCII值替换该值。出于某种原因,replace方法没有将索引处的元素替换为ASCII值 sb是我的StringBuilder,握着字符串结果是我想要的返回字符串 for(int i=0;i
sb
是我的StringBuilder,握着字符串<代码>结果是我想要的返回字符串
for(int i=0;i
有些事情我会纠正,但@Nikolai Dmitriev已经指出了其中的一些
n
是需要的,尽管@Nikolai Dmitriev说不需要。因为您想用它的ASCII值替换它。但是,您可以将其缩短为stringa=String.valueOf((int)c)甚至去掉c
,直接使用'stringa=String.valueOf((int)sb.charAt(i))李>
您正在使用sb.replace(char start、char end、String str)代码>而函数应接受sb.replace(int start、int end、String str)代码>。要纠正这一点,只需使用sb.replace(i,i+1,a)代码>。请注意,您使用的是end=i+1
,因为StringBuilder替换函数的结束值是独占的(不包括)
最后初始化结果
。如果在for循环中执行该操作,则该变量的作用域在for循环中,并且由于要返回该变量,因此在替换完所有偶数索引后,需要对其进行初始化
将replace语句更改为(i+1,i+1,a)时,字符串输出中没有任何更改。。。另一方面,当我将语句改为(i,i+1,a)时,结果是字符串中的每个元素都发生了变化,而不是偶数。经过更多测试后,上面列出的修复仍然会产生错误的结果。当replace语句设置为(i,i+1,a)时,字符串中的每个元素都将被替换,而不是偶数元素。您必须使用if(i%2==0)
检查它是否为偶数索引,然后在该if语句中执行操作。:)我通过两种方式实现了这一点,一种是将循环迭代次数增加2(I=I+2),另一种是加入刚才提到的if条件。仍然会产生整个字符串被更改的相同结果,而不是偶数元素:/OK,我想我知道为什么会发生这种情况。第一个字母被更改,现在第二个字母将位于索引2,因为ascii值的长度为2。尝试使用字符串作为引用,首先使用空的stringbuilder。循环遍历字符串,而不是stringbuilder,如果索引为奇数,则将字符串的字符添加到stringbuilder,否则添加原来的ascii值!谢谢你的帮助!!因为额外的数字而推动索引的想法甚至没有在我脑海中出现lol:)