53

我想在下面替换第一次出现的字符串。

  String test = "see Comments, this is for some test, help us"

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

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

我想得到如下输出,

 Output: this is for some test, help us

提前致谢,

4

7 回答 7

99

您可以使用replaceFirst(String regex, String replacement)字符串的方法。

于 2012-06-05T12:42:10.850 回答
22

您应该使用已经过测试且记录良好的库来编写自己的代码。

org.apache.commons.lang3.
  StringUtils.replaceOnce("coast-to-coast", "coast", "") = "-to-coast"

Javadoc

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

马文

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>

学分

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

于 2016-09-26T03:45:52.700 回答
19

您可以使用以下语句将第一次出现的文字字符串替换为另一个文字字符串:

String result = input.replaceFirst(Pattern.quote(search), Matcher.quoteReplacement(replace));

但是,这在后台做了很多工作,而用于替换文字字符串的专用函数不需要这些工作。

于 2017-04-16T11:18:30.377 回答
15

使用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);

输出:

这是一些测试,帮助我们

于 2012-06-05T12:41:00.040 回答
3

您可以使用以下方法。

public static String replaceFirstOccurrenceOfString(String inputString, String stringToReplace,
        String stringToReplaceWith) {

    int length = stringToReplace.length();
    int inputLength = inputString.length();

    int startingIndexofTheStringToReplace = inputString.indexOf(stringToReplace);

    String finalString = inputString.substring(0, startingIndexofTheStringToReplace) + stringToReplaceWith
            + inputString.substring(startingIndexofTheStringToReplace + length, inputLength);

    return finalString;

}

以下链接提供了使用带和不带正则表达式替换第一次出现的字符串的示例。

于 2017-04-25T15:59:13.047 回答
-1

使用 String replaceFirst 将分隔符的第一个实例交换为唯一的:

String input = "this=that=theother"
String[] arr = input.replaceFirst("=", "==").split('==',-1);
String key = arr[0];
String value = arr[1];
System.out.println(key + " = " + value);
于 2013-06-14T19:43:37.583 回答
-1

您也可以使用此方法;

public static String replaceFirstOccurance(String str, String chr, String replacement){
    String[] temp = str.split(chr, 2);
    return temp[0] + replacement + temp[1];
}
于 2021-10-02T11:24:49.587 回答