首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中替换不区分大小写的字面子字符串

如何在Java中替换不区分大小写的字面子字符串
EN

Stack Overflow用户
提问于 2011-02-20 11:13:07
回答 8查看 125.4K关注 0票数 142

在字符串中使用replace(CharSequence target, CharSequence replacement)方法,如何使目标不区分大小写?

例如,它现在的工作方式:

String target = "FooBar";
target.replace("Foo", "") // would return "Bar"

String target = "fooBar";
target.replace("Foo", "") // would return "fooBar"

我如何才能使它成为替换(或者如果有更合适的方法)是不区分大小写的,这样两个示例都会返回"Bar"?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-02-20 11:23:36

String target = "FOOBar";
target = target.replaceAll("(?i)foo", "");
System.out.println(target);

输出:

Bar

值得一提的是,replaceAll将第一个参数视为正则表达式模式,这可能会导致意外的结果。要解决这个问题,还可以按照注释中的建议使用Pattern.quote

票数 322
EN

Stack Overflow用户

发布于 2011-02-20 11:19:53

如果你不关心大小写,那么它是否全部返回大写也无关紧要:

target.toUpperCase().replace("FOO", "");
票数 10
EN

Stack Overflow用户

发布于 2012-08-19 21:18:31

由于某些字符是保留的,因此正则表达式的管理相当复杂:例如,"foo.bar".replaceAll(".")会生成一个空字符串,因为点表示“任何东西”,如果您想要替换的话,只需将点指定为参数"\\."

一种更简单的解决方案是使用StringBuilder对象来搜索和替换文本。它有两个参数:一个包含小写版本的文本,另一个包含原始版本。对小写内容执行搜索,检测到的索引也将替换原始文本。

public class LowerCaseReplace 
{
    public static String replace(String source, String target, String replacement)
    {
        StringBuilder sbSource = new StringBuilder(source);
        StringBuilder sbSourceLower = new StringBuilder(source.toLowerCase());
        String searchString = target.toLowerCase();

        int idx = 0;
        while((idx = sbSourceLower.indexOf(searchString, idx)) != -1) {
            sbSource.replace(idx, idx + searchString.length(), replacement);
            sbSourceLower.replace(idx, idx + searchString.length(), replacement);
            idx+= replacement.length();
        }
        sbSourceLower.setLength(0);
        sbSourceLower.trimToSize();
        sbSourceLower = null;

        return sbSource.toString();
    }


    public static void main(String[] args)
    {
        System.out.println(replace("xXXxyyyXxxuuuuoooo", "xx", "**"));
        System.out.println(replace("FOoBaR", "bar", "*"));
    }
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5054995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档