我是一名学生想要找出问题
我需要创建一个方法,从另一个字符串中删除指定字符串中的任何字符
所以如果String str = "hello world" and String remove = "eo"
该方法将返回"hll wrld"
。
我的解决方案设置的方式结果字符串被打印出来很多次,这是我不想要的。是否有一个简单的解决方法,或者我必须重做该方法?
class StringStuff{
public static void main (String [] args){
String str = "This is a string that needs to be changed";
String remove = "iaoe";
System.out.println(removeChars(str, remove));
}
public static String removeChars(String str, String remove){
String newStr = "";
for(int i=0;i<remove.length();i++){
for(int j=0; j<str.length(); j++){
if(str.charAt(j)!=remove.charAt(i)){
newStr = newStr+str.charAt(j);
}
}
}
return newStr;
}
}
更新
感谢您的回复,我发现了另一种受您提供的解决方案启发的“新方式”。
public static String removeChar(String str, String remove){
String newStr = "";
boolean match = false;
for(int i = 0; i<str.length(); i++){
for(int j=0; j<remove.length(); j++){
if(str.charAt(i) == remove.charAt(j))
match = true;
}
if(match == false)
newStr = newStr + str.charAt(i);
match = false;
}
return newStr;
}
答案 0 :(得分:2)
这将完成这项工作:
return str.replaceAll("[" + remove + "]", "");
只要remove
不包含必须在正则表达式字符类中转义的任何字符。
答案 1 :(得分:2)
此答案假定不允许使用replaceXXX
方法。
首先,for
循环是错误的循环方式。第一个循环需要遍历原始String
。
下一个问题是嵌套的for
循环会在String
字符串的每个字符的新remove
附加一个字符,前提是字符不要不配。这会产生hllo worldhell wrld
。
因此,解决方案不是迭代remove
String
。 indexOf用于字符检查。
public static String removeChars(String str, String remove) {
String newStr = "";
for (int i = 0; i < str.length(); i++) {
if (remove.indexOf(str.charAt(i)) == -1) {
newStr = newStr + str.charAt(i);
}
}
return newStr;
}
使用StringBuilder
而不是String
newStr
可以进一步改进。