在StringBuilder字符串中替换“char”

时间:2014-05-07 07:12:12

标签: java char stringbuilder

我的要求非常简单,获取一个字符位置并将其替换为另一个 唯一的问题是,char及其index在运行时出现,无法进行硬编码。

我实际执行的虚拟代码:

public static void main(String args[])
{
   StringBuilder sb = new StringBuilder("just going nuts")  ;
   System.out.println(" "+sb);
   //System.out.println(sb.charAt(4)); //this works
   sb.setCharAt(sb.indexOf((sb.charAt(4))), sb.charAt(0)); //line 8 -error line
   System.out.println(" "+sb);
}

我甚至尝试将char括在引号中:

sb.setCharAt(sb.indexOf(( "\""+sb.charAt(4)+"\"" )), sb.charAt(0));

但仍然是同样的错误

错误

line no:8: cannot find symbol
symbol : method indexOf(char)
location: class java.lang.StringBuilder
sb.setCharAt(sb.indexOf((sb.charAt(4))), sb.charAt(0));

我不是很流利的Java但是找不到具有动态值的setCharAt函数示例,就像在这种情况下!!

2 个答案:

答案 0 :(得分:6)

错误是因为indexOf期待String而不是char所以您需要做的就是用String.valueOf

包裹它
sb.setCharAt(sb.indexOf(String.valueOf((sb.charAt(4)))), sb.charAt(0));

输出

 just going nuts
 justjgoing nuts

当您键入甚至提供解决方案时,现代IDE应该捕获此编译时错误(在IntelliJ下面的情况下):

enter image description here

答案 1 :(得分:0)

尝试添加空字符串

sb.setCharAt(sb.indexOf((sb.charAt(4))+""), sb.charAt(0));

因为sb.indexOf()使用的不是字符串,而是字符串。