有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

regex Java替换在字符串中使用空格作为分隔符的内容(不区分大小写)

首先,考虑区分大小写。 例如,str = "foo foo ,foo, .foo. foo foo" ; positions :1 2 3 4 5 6

由于第二个"foo"和第五个"foo"使用空格作为分隔符,它们将被"zoo"替换

然后result = "foo zoo ,foo, .foo. zoo foo"

第二,考虑不区分大小写的情况,例如:

str = "foo Foo ,foo, .foo. Foo foo" ; positions :1  2  3  4  5  6

由于第二个"Foo"和第五个"Foo"使用空格作为分隔符,因此在不区分大小写的情况下,它们将被"zoo"替换

然后result = "foo zoo ,foo, .foo. zoo foo"

我想使用replaceALL(),但找不到regex可以限制内容上的分隔符。此外,如何将分隔符限制与不区分大小写的限制结合起来

非常感谢


共 (3) 个答案

  1. # 1 楼答案

    使用replaceAll是一种很好的方法。我认为你必须寻找正则表达式,例如在这个link

    这是一个适用于您的示例的实现,但是如果您想要一些不同的东西,可能需要进行一些更改

    text = text.replaceAll("(?i) " + keyWord + " ", " zoo ");
    

    在这种情况下

    keyWord = "foo";
    
  2. # 2 楼答案

    如果我理解正确:

        String t = "foo Foo ,foo, .foo. foo foo";
        t = t.replaceAll("(?i)(?<=\\s)(\\w+)(?=\\s)", "zoo");
        System.out.println(t); // foo zoo ,foo, .foo. zoo foo
    
  3. # 3 楼答案

            String str1 = "foo foo ,foo, .foo. foo foo" ;
            String str2 = "foo Foo ,foo, .foo. Foo foo" ; 
            str1 = str1.replaceAll("(?i) foo ", " zoo ");
            str2 = str2.replaceAll("(?i) foo ", " zoo ");
            System.out.println("str1: "+str1);
            System.out.println("str2: "+str2);