0

我写了一个文本,我想将一些字符更改为用户将选择它们的任何其他字符,我尝试并找不到正确的答案,所以请指导我。MyTest 类中的代码是:

public String replace(String input,char from,char to){
   String input2 ="";
   String input3="";
   this.input=input3;
   for(int i=0;i<input.length();i++){
       for(int j=0;j<input3.length();j++){
          if(input.charAt(i)==input3.charAt(j)){
              input2=input3.replace(from, to);
              System.out.println(input2);
          }
       }

   }
   return input2;
}

主类中的代码:

System.out.println("please enter the new character: ");
   char c1 = scan.next().charAt(0);
   System.out.println("Please choose the letters that you want to change it which in the text:");
   String ltr = scan.next();
   obj1.convertChars(ltr, c1);
4

3 回答 3

3

(1) 你应该做什么:

有一个简单的方法可以满足您的需求String#replace(char,char)::

String replaced = myString.replace(from,to);

(2) 为什么你的代码失败:

请注意,您正在迭代并尝试调用replace()on input3,而它是一个空字符串!你从来没有改变过它!实际上,您的方法什么都不做(除了分配实例变量input. 绝对不是您想要的。

(3)同样重要: String java中的s是不可变的

在java中,String是不可变的——所以你实际上是用替换的字符创建一个新的字符串,而不是替换同一个字符串对象中的字符!

更改String不是那么简单,应该避免,但可以使用反射 API来完成。

于 2012-12-13T12:10:43.910 回答
1

你想做的甚至不应该是一种方法。原因如下:

public String replace(String input,char from,char to){
    return input.replace(from, to);
}

因此这种方法没有任何价值——你应该直接调用replace()String 的方法。

于 2012-12-13T12:04:11.103 回答
0

这个问题似乎有点不清楚。我希望你想要一个这样的函数:从主函数调用这个函数。传递字符串“abcde”、“a”、“x”。它会返回“xbcde”。

public String replace(String inputStr, char from, char to){
    StringBuffer newString=new StringBuffer();
    for(int i=0;i<inputStr.length();i++){
        if(inputStr.charAt(i)==from){
            newString.append(to);
        }
        else{
            newString.append(inputStr.charAt(i));
        }
    }
    return newString.toString();
}
于 2012-12-13T12:24:36.123 回答