替换Java中的精确字符串

替换Java中的精确字符串,java,regex,string,replace,Java,Regex,String,Replace,这是我得到的字符串: http://sdsadasd/time/time.jsp?tp=&a 现在我想用java.jsp替换第二个time.jsp,但是不是第一个“时间” 我怎样才能做到呢?我已经试过了,但不起作用: replaceAll("\\btime.jsp"", "java.jsp"); 谢谢。试试这个: replaceAll("time.jsp", "java.jsp"); 您可以使用: String result = "http://sdsadasd/time/time

这是我得到的字符串:

http://sdsadasd/time/time.jsp?tp=&a
现在我想用java.jsp替换第二个time.jsp,但是不是第一个“时间”

我怎样才能做到呢?我已经试过了,但不起作用:

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

试试这个:

replaceAll("time.jsp", "java.jsp");
您可以使用:

String result = "http://sdsadasd/time/time.jsp?tp=&a".replaceFirst("time\\.jsp", "java.jsp");
或者使用好朋友StringUtils

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 

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


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

没有工作是很没用的。它表现如何?你期望它做什么?你为什么期望它这样做呢?你的
replaceAll
行得通(我猜你的原作没有双精度的“)。注意
replaceAll
不会修改字符串,但会返回一个新字符串。
replaceAll
使用正则表达式语法。如果您对替换文字感兴趣,请使用
replace
。还请记住,字符串是不可变的,因此您不能更改它们,这就是为什么
replace
返回新的、修改过的字符串,而您需要存储这些字符串的原因。@SotiriosDelimanolis:我认为问题相当清楚,为什么应该这样做应该由我决定。此外,我已经得到了帮助。
StringUtils
不是Java标准库中的类。这个类来自哪个库?关于StringUtils:只有在类路径上有Apache commons lang时,时间之前有一个
/
,时间是单词边界,所以
\b
应该可以工作。@rici非常感谢。我删除了答案,因为我更喜欢你的答案,而不是我的:)
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);
    }