【问题标题】:Replacing multiple substrings from a string in Java/Android [duplicate]从Java / Android中的字符串替换多个子字符串[重复]
【发布时间】:2016-08-02 16:43:15
【问题描述】:

例子:

String originalString = "This is just a string folks";

我想删除(或用“”替换它们):1. "This is" , 2. "folks" 期望的输出:

finalString = "just a string";

对于一个唯一的子字符串很简单,我们可以使用replace/replaceAll。 我也知道它适用于各种数值replace("[0-9]","") 但是角色可以这样做吗?

【问题讨论】:

    标签: java android


    【解决方案1】:

    您可以创建如下函数:

    String replaceMultiple (String baseString, String ... replaceParts) {
        for (String s : replaceParts) {
            baseString = baseString.replaceAll(s, "");
        }
        return baseString;
    }
    

    然后这样称呼它:

    String finalString = replaceMultiple("This is just a string folks", "This is", "folks");
    

    您可以在第一个参数之后传递多个要替换的字符串。

    【讨论】:

    • 谢谢。您认为对于这项任务是否有通过“模式”的解决方案?
    • 由于您的模式有点模糊,可能不是。你可以通过正则表达式来做到这一点,但是你需要小心你的模式匹配
    • 谢谢。最后一个问题,例如,如果我有“notbe”这个词。我想删除所有的“not”前缀,这样“notbe”就会变成“be”。您知道如何实现吗?
    • 上面的函数会为你完成这项任务。
    【解决方案2】:

    它是这样工作的:

    String originalString = "This is just a string folks";
    originalString = originalString.replace("This is", "");
    originalString = originalString.replace("folks", "");
    //originalString is now finalString
    

    【讨论】:

    • 这个解决方案非常明显。我的问题是是否有更有效或更“优雅”的方式来做到这一点?因为我有很多子字符串要覆盖,我希望将来能够轻松添加更多。
    • 啊抱歉...是的,当然...但我不知道它在您的情况下如何工作。使用 replaceAll("[A-Za-z]", "")
    • 您始终可以创建一个包含所有要替换的子字符串的枚举,并且可以轻松添加更多以防将来需要扩展。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2014-11-05
    • 2022-01-07
    • 2016-09-10
    • 2015-03-17
    • 1970-01-01
    • 2019-03-16
    相关资源
    最近更新 更多