如何用户用其他字符替换字符串中的一些字符?

时间:2012-12-13 11:56:55

标签: java

我写了一篇文章,我想将一些字符更改为用户将选择它们的任何其他字符,我试过并找不到正确的答案,所以请指导我。 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);

3 个答案:

答案 0 :(得分:3)

(1)你应该做什么:

您可以采用一种简单的方法:String#replace(char,char)

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

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

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

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

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

更改String并不简单,应该避免,但可以使用reflection API完成。

答案 1 :(得分:1)

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

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

因此,某种方法没有增加任何价值 - 你应该直接调用String的replace()方法。

答案 2 :(得分:0)

这个问题似乎有点不清楚。我希望你想要一个像这样的函数: 从main函数调用此函数。传递字符串“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();
}