【问题标题】:How to replace a substring of a string [duplicate]如何替换字符串的子字符串[重复]
【发布时间】:2013-05-18 03:07:09
【问题描述】:

假设我有一个这样的字符串string

"abcd=0; efgh=1"

我想用“dddd”替换“abcd”。我曾尝试过这样做:

string.replaceAll("abcd","dddd");

它不起作用。有什么建议?

编辑: 更具体地说,我正在使用 Java 并试图解析 HTML 文档,具体来说是 <script> 标记之间的内容。我已经找到了一种将这些内容解析为字符串的方法:

 if(tag instanceof ScriptTag){
        if(((ScriptTag) tag).getStringText().contains("DataVideo")){
            String tagText = ((ScriptTag)tag).getStringText();
      }
}

现在我必须找到一种方法,如何将一个子字符串替换为另一个子字符串。

【问题讨论】:

  • 你能比“它不起作用”更具体吗?首先,这是什么语言?你有错误吗?会不会发生意想不到的事情?您一般要完成什么?

标签: java string substring


【解决方案1】:

您需要使用replaceAll() 方法的返回值。 replaceAll() 不替换当前字符串中的字符,它返回一个带有替换的新字符串。

  • String 对象是不可变的,它们的值在创建后无法更改。
  • 如果不需要正则表达式,可以使用 replace() 代替 replaceAll()。
    String str = "abcd=0; efgh=1";
    String replacedStr = str.replaceAll("abcd", "dddd");

    System.out.println(str);
    System.out.println(replacedStr);

输出

abcd=0; efgh=1
dddd=0; efgh=1

【讨论】:

  • 请注意,replaceAll 需要一个正则表达式。替换空白括号“()”将产生正则表达式错误,直到您进行正确的转义:str.replaceAll("\\(\\)", "");
【解决方案2】:

你应该注意的两件事:

  1. Java 中的字符串是不可变的,因此您需要将 replace 方法调用的返回值存储在另一个字符串中。
  2. 您实际上并不需要正则表达式,只需简单地调用 String#replace(String) 即可。

所以只需使用以下代码:

String replaced = string.replace("abcd", "dddd");

【讨论】:

    【解决方案3】:

    您需要创建变量以分配新值,如下所示:

    String str = string.replaceAll("abcd","dddd");
    

    【讨论】:

      【解决方案4】:

      通过正则表达式我认为这是java,方法replaceAll()返回一个替换子字符串的新字符串,所以试试这个:

      String teste = "abcd=0; efgh=1";
      
      String teste2 = teste.replaceAll("abcd", "dddd");
      
      System.out.println(teste2);
      

      输出:

      dddd=0; efgh=1
      

      【讨论】:

        【解决方案5】:

        注意替换中的反斜杠 (\) 和美元符号 ($) 字符串可能会导致结果与之前的结果不同 视为文字替换字符串;看 Matcher.replaceAll。 采用 Matcher.quoteReplacement(java.lang.String) 如果需要,可以隐藏这些字符的特殊含义。

        来自javadoc

        【讨论】:

          【解决方案6】:

          您可能在替换或替换错误的东西后没有分配它。 试试看:

          String haystack = "abcd=0; efgh=1";
          String result = haystack.replaceAll("abcd","dddd");
          

          【讨论】:

            【解决方案7】:

            在javascript中:

            var str = "abcdaaaaaabcdaabbccddabcd";
            document.write(str.replace(/(abcd)/g,"----"));
            //example output: ----aaaaa----aabbccdd----
            

            在其他语言中,它会是类似的东西。记得启用全局匹配。

            【讨论】:

              猜你喜欢
              • 2014-11-05
              • 2022-01-07
              • 2015-10-08
              • 1970-01-01
              • 2011-10-10
              • 1970-01-01
              • 2017-07-02
              • 1970-01-01
              • 2020-04-05
              相关资源
              最近更新 更多