我试图用ascii值替换字符串中的偶发事件。我使用stringbuilder替换方法,从每次迭代的索引开始,在相同的索引结束,然后用ascii值替换值。出于某种原因,replace方法没有用ascii值替换索引处的元素。 sb
是我的架线工牵着绳子; result
是我想要的返回字符串。
for (int i =0; i < sb.length(); i=i+2) {
char c = sb.charAt(i);
int n = c;
String a = String.valueOf(n);
sb.replace(sb.charAt(i), sb.charAt(i), a);
result = sb.toString();
}
1条答案
按热度按时间6bc51xsx1#
有些事情我会纠正的,但是@nikolai dmitriev已经指出了其中的一些。
这个
n
是必要的,尽管@nikolai dmitriev说不是。因为您想用它的ascii值替换它。但是,您可以将其缩短为String a = 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替换函数的结束值是独占的(不包括)。初始化
result
最后。如果在for循环中执行该操作,则该变量在for循环中的作用域为,并且由于要返回该变量,因此需要在替换完所有偶数索引后对其进行初始化。