用另一个String中的每个字符替换字符串中的字符

时间:2013-04-25 07:07:12

标签: java string replaceall

基本上我需要编写一个接收两个字符串参数的字符串方法,并用第一个字符串中的“”替换第二个字符串中存在的每个字符。例如,第一个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)放在那里,然后完成它,但我不确定这是可能的。我觉得这是一个稍微复杂的问题...我不熟悉数组列表,看起来字符串的不变性可能会给我带来一些问题。

此方法应该能够处理输入的任何值的字符串。任何帮助或方向都将非常感谢!

3 个答案:

答案 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);
    }
}