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