【问题标题】:Replace Exact String in Java在Java中替换确切的字符串
【发布时间】:2015-06-06 14:29:15
【问题描述】:

这是我得到的字符串:

http://sdsadasd/time/time.jsp?tp=&a

现在我想将第二个 time.jsp 替换为 java.jsp不是 第一个“时间”?

我怎样才能实现它?我已经尝试过了,但它不起作用:

replaceAll("\\btime.jsp"", "java.jsp");

谢谢。

【问题讨论】:

  • 没有工作 是非常没用的。它表现如何?你期望它做什么?你为什么期望它这样做?
  • 您的replaceAll 有效(我猜您的原件没有双“”)。注意replaceAll 不会修改你的字符串,而是返回一个新的。
  • replaceAll 使用正则表达式语法。如果您有兴趣替换文字,请使用replace。另请记住,字符串是不可变的,因此您无法更改它们,这就是为什么 replace 返回新的修改后的字符串,而不是您需要存储的字符串。
  • @SotiriosDelimanolis:我认为这个问题很清楚,为什么应该这样做应该取决于我。此外,我已经得到了帮助。

标签: java regex string replace


【解决方案1】:

你可以使用:

String result = "http://sdsadasd/time/time.jsp?tp=&a".replaceFirst("time\\.jsp", "java.jsp");

或者使用好友ApacheCommonStringUtils...

String result = StringUtils.replaceOnce("http://sdsadasd/time/time.jsp?tp=&a", "time.jsp", "java.jsp");

例如,你可以这样做:

public static void main(String[] args) {
    String result = "http://sdsadasd/time/time.jsp?tp=&a".replaceFirst("time\\.jsp", "java.jsp");
    System.out.println(result);
}

// Print: 
http://sdsadasd/time/java.jsp?tp=&a 

【讨论】:

  • StringUtils 不是 Java 标准库中的类。这个类来自哪个库?
  • RE StringUtils:仅当您在类路径上有 Apache commons lang 时
  • time 之前有一个/,这是一个单词边界,所以\b 应该可以工作。
  • @rici 非常感谢。我删除了答案,因为我喜欢你的胜过我的 :)
【解决方案2】:

如果我正确理解了您的问题,您只想替换 第二次出现的“time.jsp”。

Try the following:

    boolean replace = false;
    int index = myString.indexOf("time.jsp");
    while(index != -1) {
        String substr = myString.substring(index);
        if(replace) {
            //do your replacement
        }
        index = myString.indexOf("time.jsp", index + 1);
    }

我没有编译这个,但它是您可以使用的通用解决方案!

【讨论】:

    【解决方案3】:

    试试这个:

    replaceAll("time.jsp", "java.jsp");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-10
      • 2013-08-07
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 2023-03-21
      • 2015-10-20
      • 2018-02-27
      相关资源
      最近更新 更多