String.replace()java不替换与表达式匹配的字符

时间:2015-12-09 11:58:59

标签: java

我正在尝试使用名称inputPath替换字符串中与表达式匹配的少数几个字符,这样如果inputPath包含"json*"之类的表达式,则必须删除"json*"从那个字符串。我确实喜欢这个:

String newPath = inputPath.replace("json*","");

当我打印newPath时,我收到的字符串"json"被删除但"*"未被删除或替换。但我需要删除或替换整个"json*"。我只是不明白为什么它不会替换"*"而只替换"json"

2 个答案:

答案 0 :(得分:1)

对于String类中的replace(),这不是真的和意外的。可能你正在使用replaceAll / replaceFirst,它将ReGex作为输入。我已经复制了你得到的东西。

use 5.010

在这种情况下,因为*是一个ReGex字符所以你需要使用\\来转义它们:

  

String newPath = inputPath.replaceAll(“json \\ *”,“”);

答案 1 :(得分:0)

我已经找到了我发布的上一个问题的解决方案: 如果我使用:

String finalPath = input.getPath().replace("json*","")
           or
String finalPath = input.getPath().replace(input.getPattern(),"")

然后我将输出作为/ input / *并删除了json但*没有删除。相反我确实喜欢这样:

 String replacedPattern = input.getPattern().replace("*","");

 String replacedPath = input.getPath().replace("*","");

 String finalPath=replacedPath.replace(replacedPattern, "");

现在我的输出为/ input /并删除了json *,预计会是。