2017-08-07 55 views
-1

寻找一些帮助来找到如何替换最后一个“。”。在java中通过正则表达式将字符转换为其他字符串。我有这样的代码不起作用。任何建议。用正则表达式替换特殊字符Java

"//myserver.com//NAGA.CSV".replaceAll(".$","_2.") 

输出: //myserver.com//NAGA_2.CSV

+0

['“//myserver.com //NAGA.CSV".replaceFirst("""..??.*\.)""""""" 2.")'](https://ideone.com/JTalEH) –

+1

此外[替换最后一部分(string)(https://stackoverflow.com/questions/1660034/replace-last-part-of-string) – Flown

回答

3

你可以使用一个前瞻,查找的字符串,比点其他字符之前结束。

yourString.replaceAll("\\.(?=[^.]*$)", "replacement"); 

注意,第一点需要用反斜杠转义,因为点在正则表达式(它匹配任何字符)的特殊含义。第二个点不需要转义,因为特殊含义不适用于方括号。

(?= )结构的意思是“后跟此” - 换句话说,您匹配的点后面可以跟着任意数量的非点字符,然后是字符串的末尾。这些额外的字符不被视为比赛的一部分。

0

这不是一个正则表达式,但你可以使用String.lastIndexOf()方法,让您的字符的最后一次出现的位置,并使用String.substring来创建新的字符串:

String yourString = "test.csv"; 
String newValue = "_2."; 
int lastOccurence = yourString.lastIndexOf("."); 
String replacedString = yourString.substring(0, lastOccurence) + newValue + yourString.substring(lastOccurence + 1);