替换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);
}