【问题标题】:How to replace part of a String in Java?如何在 Java 中替换部分字符串?
【发布时间】:2015-04-05 09:08:38
【问题描述】:

我试图根据其中存在的某个短语来替换字符串的一部分。考虑字符串“你好,我的 Dg6Us9k。我还活着。”

我想搜索“my”阶段并删除右侧的 8 个字符,这将删除哈希码。这给出了字符串 “你好。我还活着。” 我如何在 Java 中做到这一点?

【问题讨论】:

    标签: java string replace find substring


    【解决方案1】:

    你可以通过string.replaceAll函数来实现。

    string.replaceAll("\\bmy.{8}", "");
    

    如有必要,请添加\\b\\b 称为单词边界,匹配单词字符和非单词字符。 .{8} 完全匹配以下 8 个字符。

    同时删除my之前的空格

    System.out.println("Hello my Dg6Us9k. I am alive.".replaceAll("\\smy.{8}", ""));
    

    【讨论】:

    • “如有必要,请添加 \\b”是什么意思?它有什么作用?
    • @TheLostMind 根据他的 expexted 输出进行了编辑,但他说我想搜索阶段“my”并删除右侧的 8 个字符`
    • @AvinashRaj - 是的.. 但是一旦我运行程序,他的预期输出与他的 question 不同:)
    【解决方案2】:

    应该这样做:

    String s = ("Hello my Dg6Us9k. I am alive");
    s.replace(s.substring(s.indexOf("my"), s.indexOf("my")+11),"");
    

    这是替换从“my”开始的字符串,长度为 11 个字符,没有任何内容。

    【讨论】:

      【解决方案3】:

      像这样使用正则表达式:

      public static void main(String[] args) {
          String s = "Hello my Dg6Us9k. I am alive";
          String newString=s.replaceFirst("\\smy\\s\\w{7}", "");
          System.out.println(newString);
      }
      

      O/P : Hello. I am alive

      【讨论】:

      • 括号前的 w 表示它会搜索一个单词? 7 是最大长度还是所需长度?
      • @Kahler - 精确 7. w 可以匹配 a-zA-Z_
      • 这很好用,感谢您的建议!但是,在显示修改后的字符串之前,确实需要先将其传递给字符串。
      【解决方案4】:

      Java 字符串是不可变的,因此您不能更改该字符串。您必须创建一个新字符串。所以,找到“my”的索引i。然后在 (0...i) 和 (i+8...) 之后连接子字符串。

      int i = s.indexOf("my");
      if (i == -1) { /* no "my" in there! */ }
      string ret = s.substring(0,i);
      ret.concat(s.substring(i+2+8));
      return ret;
      

      【讨论】:

        【解决方案5】:

        如果您想灵活设置哈希码长度,请使用以下正则表达式:

        String foo="Hello my Dg6Us9k. I am alive.";
        String bar = foo.replaceFirst("\\smy.*?\\.", ".");
        System.out.println(bar);
        

        【讨论】:

          猜你喜欢
          • 2016-04-02
          • 1970-01-01
          • 1970-01-01
          • 2020-01-28
          • 1970-01-01
          • 2016-02-16
          • 2020-03-04
          • 2021-11-05
          • 1970-01-01
          相关资源
          最近更新 更多