使用Java替换字符串中最后出现的字符
我有一根这样的绳子使用Java替换字符串中最后出现的字符,java,string,replace,Java,String,Replace,我有一根这样的绳子 String s1 = "2999.1049.00_GRB.1"; String s2 = "my File.txt.txt"; 我想用“\u 1”替换最后一个“.1”,用“\u txt”替换最后一个“.txt” 字符串的结果应该是 s1 = "2999.1049.00_GRB_1" and s2 = "my File.txt_txt" 我怎样才能做到这一点。我知道要替换字符串的第一个匹配项。但不知道如何替换字符串的最后一次出现。只需使用.replace为字符串的last
String s1 = "2999.1049.00_GRB.1";
String s2 = "my File.txt.txt";
我想用“\u 1”替换最后一个“.1”,用“\u txt”替换最后一个“.txt”
字符串的结果应该是
s1 = "2999.1049.00_GRB_1" and s2 = "my File.txt_txt"
我怎样才能做到这一点。我知道要替换字符串的第一个匹配项。但不知道如何替换字符串的最后一次出现。只需使用.replace为字符串的lastIndexOf方法
System.out.println(s.replace(s.substring(s.lastIndexOf(".1"), s.length()), "_1"));
您可以使用正则表达式:
s = s.replaceAll("(.*)\\.(\\d+)$","$1_$2");
// (everything)point(digits) -> (everything)underscore(digits)
它将捕获一个组(group1
)中前面的所有元素,另一个组(group2
)中后面的数字,并替换为:group1\u group2
- 第一组可以是你想要的任何东西
- 第二组只是数字,甚至超过1
使用lastIndexOf?这个问题并没有说明你已经做了很多研究。你的问题只包含了要求,并没有说明你方面为自己解决这个问题所做的任何努力。请添加您对此问题的尝试-因为此网站不是免费的“我们为您(家庭)工作”服务。除此之外:请转到第页了解如何/问什么。谢谢您可以使用System.out.println(“***”+s1.substring(0,s1.lastIndexOf(“.”)+“"”+s1.substring(s1.lastIndexOf(“.”+1))代码>它将适用于s1
和s2
两个答案类abc{public static void main(String[]args){String s1=“2999.1049.00_GRB.1”;int i=s1.lastIndexOf(“.”);StringBuilder myName=new StringBuilder(s1);myName.setCharAt(i,'.');System.out.println(myName)}
使用lastIndexOf
和替换
这个索引使用StringBuilder
。它假设总是这样。1“我不知道这个.1
是怎么出现在这里的,我很好奇x)根据他的需要,他总是要求的。”else可以定义一个变量使其成为动态的。您想将答案改为“.”和“uu”,例如。@GhostCat:应该如您所建议的那样。然后它将类似于:System.out.println(s.replace(s.substring(s.lastIndexOf(“.”-1,s.length()-1),“”);