使用Java替换字符串中字符的上次出现次数

时间:2017-08-10 12:38:12

标签: java string replace

我有一个像这样的字符串

String s1 = "2999.1049.00_GRB.1";
String s2 = "my File.txt.txt";

我想将最后一个“.1”替换为“_1”,将“.txt”替换为“_txt”

String的结果应该是

s1 = "2999.1049.00_GRB_1" and s2 = "my File.txt_txt"

我该怎么做?我知道替换第一次出现的字符串。但不知道如何替换最后一次出现的字符串。

2 个答案:

答案 0 :(得分:1)

只需将.replace与字符串

的lastIndexOf方法一起使用即可
System.out.println(s.replace(s.substring(s.lastIndexOf(".1"), s.length()), "_1"));

答案 1 :(得分:0)

您可以使用正则表达式:

s = s.replaceAll("(.*)\\.(\\d+)$","$1_$2");  

//  (everything)point(digits) -> (everything)underscore(digits)

它将捕获组中.之前的所有元素(group1),另一组中的数字(group2),并替换为:{{1 }}

  • 第一组可以是你想要的任何内容
  • 第二组只是数字,甚至超过1

Regex demo