我只想删除字符串中的最后一个*。例如,abc*
应该变成abc
。 abc*d*d
应该成为abc*dd
。
我检查了其他解决方案,发现:
parameter.replaceAll("a$", "b")
这将用“ b”代替最后的“ a”。但是,当我将其更改为此时,会显示错误:
parameter.replaceAll("*$", "b")
我也尝试过:
parameter.replaceAll("\\*$", "b")
答案 0 :(得分:1)
parameter = parameter.replaceFirst("\\*$", "b"); // "aaa*" to "aaab"
parameter = parameter.replaceFirst("\\*([^*]*)$", "b$1"); // "aa*aa*aa" to "aa*aabaa"
答案 1 :(得分:1)
您可以使用lastIndexOf()
和substring()
来代替性能高的正则表达式,以便在紧密循环中使用时获得更好的性能。
int idx = parameter.lastIndexOf('*');
if (idx != -1)
parameter = parameter.substring(0, idx).concat(parameter.substring(idx + 1));
答案 2 :(得分:1)
答案 3 :(得分:0)
parameter.replaceAll("[*]([^*]*)$", "$1")
// ^^^
// A ^^^^^^^
// B
匹配一个星号(A),然后匹配0个或多个非星号(B)。圆括号B表示该字符串被捕获为$1
。替换字符串仅包含$1
,这意味着星号实际上已被擦除。
确保将结果分配给变量,或将其打印出来。 replaceAll()
未修改parameter
;它返回修改后的字符串。