【问题标题】:Replace everything after last forward slash替换最后一个正斜杠后的所有内容
【发布时间】:2014-10-17 21:31:15
【问题描述】:

我正在尝试删除 URL 中最后一个正斜杠之后的所有内容。我写了一些在online Java REGEX 测试器中工作的正则表达式,但不幸的是在我的本地代码中没有。任何关于为什么会这样的见解将不胜感激。现在我的 REGEX 模式、目标字符串和所需的输出如下。

Regular Expression: "[^/]*$"
Target String: /example/c/coffee101
Desired Output: /example/c/cafè999

简单的 Java 代码:

target = "/example/c/coffee101";
replace = "cafè999";
target.replaceFirst("[^/]*$", replace);

非常感谢!

【问题讨论】:

    标签: java regex replace


    【解决方案1】:

    您需要将replaceFirst 方法的返回值分配给target,因为String 类中的任何方法都不会更改String 对象本身:

    target = target.replaceFirst("[^/]*$", replace);
    

    【讨论】:

    • 我们中的一个人需要在晚上摆脱正则表达式标签;)开个玩笑,让我投票(反正我一小时后要去度假!)。
    • 非常感谢。我太专注于 REGEX 本身,而忽略了实际功能。
    • @user1615559:这不一定与函数和返回值有关,而是与 String 对象是不可变的事实有关。
    【解决方案2】:

    好像.replaceFirst() 返回了修改后的字符串..try:

    target = target.replaceFirst("[^/]*$", replace);
    

    退货

    用替换字符串替换第一个匹配子序列构造的字符串,根据需要替换捕获的子序列

    【讨论】:

    • 非常感谢。太纠结于为什么 REGEX 可能是错误的,而忘记真正考虑函数本身。
    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多