【问题标题】:Java Replace Only Particular StringJava 仅替换特定字符串
【发布时间】:2021-06-21 07:13:37
【问题描述】:

我有字符串"foo_FOO1""foo1_FOO1"。我只想用"x0" 替换"foo" 部分,并且不包括"foo1" 这个词。所以"foo_FOO1" 的结果必须是"x0_FOO1""foo1_FOO1" 保持不变。请给我Java的解决方案好吗? 我试着用 str.replaceAll("foo", "x0") 但所有包含"foo" 的字符串都将替换为"x0"

【问题讨论】:

    标签: regex string replace replaceall


    【解决方案1】:

    粗略,但也尝试替换_。由于foo1_ 不匹配foo_,Java 不会替换它。

    final String test = "foo_FOO1 foo1_FOO1";
    
    final String result = test.replaceAll("foo_", "x0_");
    System.out.println(result);
    

    结果

    x0_FOO1 foo1_FOO1
    

    测试:

    private String replaceFoo(final String value) {
        return value.replaceAll("foo_", "x0_");
    }
    
    @Test
    public void testMultipleLines() {
        Assert.assertEquals("x0_FOO1 foo1_FOO1", replaceFoo("foo_FOO1 foo1_FOO1"));
        Assert.assertEquals("x0_FOO1\n\nfoo1_FOO1", replaceFoo("foo_FOO1\n\nfoo1_FOO1"));
    }
    
    @Test
    public void testSingleLine() {
        Assert.assertEquals("x0_FOO1", replaceFoo("foo_FOO1"));
        Assert.assertEquals("foo1_FOO1", replaceFoo("foo1_FOO1"));
    }
    

    如果给定的字符串可能没有_,请查看:https://stackoverflow.com/a/16398813/15257712

    【讨论】:

    • 谢谢,但字符串“foo_FOO1”和“foo1_FOO1”不在一行中。这只是一个有 2 个案例的示例 :-)
    • 我不确定你想要什么。内联、单行和多行对我来说都很好。我是否忽略了任何测试用例? (我在上面附上了我的)
    • 对不起,我只是没有关注您的解决方案:D 是的,它有效。谢谢!!!
    • 我很高兴它有效!您会将问题标记为已解决吗?
    猜你喜欢
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多