次の文字列の最初の出現を置き換えたいと思います。
String test = "see Comments, this is for some test, help us"
**テストに次のような入力が含まれている場合は、置き換えないでください
- コメントを参照してください(最後にスペースがあります)
- コメントを見る、
- コメントを見る**
次のように出力を取得したいのですが、
Output: this is for some test, help us
前もって感謝します、
replaceFirst(String regex, String replacement)Stringのメソッドを使用できます。
独自のコードを作成するために、すでにテストされ、十分に文書化されたライブラリを使用する必要があります。
org.apache.commons.lang3.
StringUtils.replaceOnce("coast-to-coast", "coast", "") = "-to-coast"
大文字と小文字を区別しないバージョンもあります(これは良いことです)。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
私の答えは次の拡張です:https ://stackoverflow.com/a/10861856/714112
次のステートメントを使用して、最初に出現するリテラル文字列を別のリテラル文字列に置き換えることができます。
String result = input.replaceFirst(Pattern.quote(search), Matcher.quoteReplacement(replace));
ただし、これはバックグラウンドで多くの作業を行い、リテラル文字列を置き換えるための専用関数では必要ありません。
String test = "see Comments, this is for some test, help us";
String newString = test.substring(test.indexOf(",") + 2);
System.out.println(newString);
出力:
これはいくつかのテストのためです、私たちを助けてください
以下の方法が可能です。
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;
}
次のリンクは、正規表現の有無にかかわらず、文字列の最初の出現を置き換えるための例を提供します。
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);
この方法を使用することもできます。
public static String replaceFirstOccurance(String str, String chr, String replacement){
String[] temp = str.split(chr, 2);
return temp[0] + replacement + temp[1];
}