如何在Java中替换第一次出现的字符串

Jag*_*esh 39 java string replace

我想在下面替换第一次出现的String.

  String test = "see Comments, this is for some test, help us"
Run Code Online (Sandbox Code Playgroud)

**如果测试包含如下输入,则不应替换

  1. 见评论,(末尾有空格)
  2. 看评论,
  3. 看评论**

我想得到如下输出,

 Output: this is for some test, help us
Run Code Online (Sandbox Code Playgroud)

提前致谢,

Asi*_*sif 79

您可以使用replaceFirst(String regex, String replacement)String的方法.

  • 这是针对REGEXes而不是字符串. (4认同)
  • @ Sridhar-Sarnobat当搜索字符串包含不应解释的模式字符时,您可以通过[`Pattern.quote(...)`]过滤字符串(https://docs.oracle.com/javase/8/首先是docs/api/java/util/regex/Pattern.html#quote-java.lang.String-).虽然,使用`Pattern.compile(searchString,Pattern.LITERAL).matcher(输入).replaceAll(replacement)`然后......可能更有效率. (4认同)
  • 这可能适用于正则表达式,但即使您提供String而不是构建正则表达式也可以使用.我刚刚测试过.所以上面讨论混淆了看到这个的人.答案是完美的. (3认同)
  • 如果您尝试替换包含`-`的字符串怎么办? (2认同)

Sri*_*bat 17

您应该使用已经过测试并且文档齐全的库来支持编写自己的代码.

org.apache.commons.lang3.
  StringUtils.replaceOnce("coast-to-coast", "coast", "") = "-to-coast"
Run Code Online (Sandbox Code Playgroud)

的Javadoc

甚至还有一个不区分大小写的版本(这很好).

Maven的

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

积分

我的答案是增加:https://stackoverflow.com/a/10861856/714112


Eng*_*uad 14

用途substring(int beginIndex):

String test = "see Comments, this is for some test, help us";
String newString = test.substring(test.indexOf(",") + 2);
System.out.println(newString);
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

这是一些测试,帮助我们

  • 等等,如果要替换的字符串不在输入字符串的开头怎么办? (2认同)

Har*_*hna 12

您可以使用以下语句替换第一次出现的字符串.

String result = input.replaceFirst(Pattern.quote(stringToReplace), stringToReplaceWith);
Run Code Online (Sandbox Code Playgroud)

链接包含完整的程序,包括测试用例.

  • 这是最好的答案,因为它还处理正则表达式字符,并且不依赖于外部库。 (2认同)