【问题标题】:Replace Last Occurrence of a character in a string Using Java [duplicate]使用Java替换字符串中最后一次出现的字符[重复]
【发布时间】:2018-01-18 17:14:20
【问题描述】:

我有这样的字符串

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

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

字符串的结果应该是

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

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

【问题讨论】:

  • 使用 lastIndexOf?
  • 这个问题并没有证明你的研究成果太多。
  • 您的问题仅包含要求 - 它并未显示您为自己解决此问题所做的任何努力。请在此问题中添加您的尝试 - 因为该站点不是免费的“我们为您提供(家庭)工作”服务。除此之外:请转至help center 了解如何/在这里问什么。谢谢!
  • 您可以使用System.out.println("***"+s1.substring(0,s1.lastIndexOf(".")) +"_"+s1.substring(s1.lastIndexOf(".")+1)); 它适用于s1s2
  • 另一个答案class 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 .replace 这个索引由_ 使用StringBuilder

标签: java string replace


【解决方案1】:

只需用字符串的lastIndexOf方法替换.replace

System.out.println(s.replace(s.substring(s.lastIndexOf(".1"), s.length()), "_1"));

【讨论】:

  • 它假定它总是“.1”
  • 我不知道这个.1 是怎么出现在这里的,而且我很好奇 x)
  • 根据他的需要,他总是需要“.1”,否则可以定义一个变量以使其动态化。
  • 您想将答案更改为“。”和“_”例如。
  • @GhostCat:应该按照你的建议。然后它会像 :System.out.println(s.replace(s.substring(s.lastIndexOf(".")-1, s.length()-1), "_"));
【解决方案2】:

你可以使用正则表达式:

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

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

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

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

Regex demo

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 2014-06-13
    • 2011-04-19
    • 2012-12-01
    • 2011-07-26
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多