基本上我需要编写一个接收两个字符串参数的字符串方法,并用第一个字符串中的“”替换第二个字符串中存在的每个字符。例如,第一个String toBeFixed = "I have a wonderful AMD CPU. I also like cheese."
和第二个String toReplaceWith ="oils"
。 The string returned would be "I have a wnderfu AMD CPU. I a ke cheee."
这就是我所拥有的:
public class removeChars
{
public static String removeChars(String str, String remove)
{
String fixed = str.replaceAll(remove,"");
return(fixed);
}
}
我不确定这是否是对如何使用replaceAll方法的误解,因为我看过像
这样的事情str = str.replaceAll("[aeiou]", "");
理想情况下,我想出办法将第二个字符串(remove)
放在那里,然后完成它,但我不确定这是可能的。我觉得这是一个稍微复杂的问题...我不熟悉数组列表,看起来字符串的不变性可能会给我带来一些问题。
此方法应该能够处理输入的任何值的字符串。任何帮助或方向都将非常感谢!
答案 0 :(得分:1)
String.replaceAll
将Regex语句作为其第一个参数。匹配"oils"
将特别匹配短语“油”。
相反,你在帖子中有正确的想法。只要您的删除字符串不包含保留的正则表达式符号(如括号,句点等),匹配"["+remove+"]"
就可以了。(我不确定重复的字符。)
如果是,则首先过滤删除字符串。
答案 1 :(得分:1)
也许不是最有效的解决方案,但很简单:
public class removeChars {
public static String removeChars(String str, String remove) {
String fixed = str;
for(int i = 0; i < remove.length(); i++)
fixed = fixed.replaceAll(remove.charAt(i)+"","");
return fixed;
}
}
答案 2 :(得分:0)
这应该有效。 replace
的工作方式与replaceAll
类似 - 仅限于值而不是正则表达式
public class removeChars {
public static String removeChars(String str, String remove) {
String fixed = str;
for(int index = 0; index < remove.length; index++) {
fixed = fixed.replace(remove.substring(index, index+1), "");
// this replaces all appearances of every single letter of remove in str
}
return(fixed);
}
}