Javaで文字列の一部を削除または置換する
1概要
このチュートリアルでは、Javaで
String
の一部を削除または置き換えることができるさまざまな方法を検討します。
String
APIを使用し、次に
StringBuilder
APIを使用し、最後にApache Commonsライブラリの
StringUtils
クラスを使用して、サブストリングを削除または置換することを検討します。
2
String
API
部分文字列を置き換える最も簡単で直接的な方法の1つは、
Stringクラスのreplace
Allまたは
replaceFirst
を使用することです。
replace()
メソッドは2つの引数 – ターゲットと置換テキストを取ります:
String master = "Hello World Baeldung!";
String target = "Baeldung";
String replacement = "Java";
String processed = master.replace(target, replacement);
assertTrue(processed.contains(replacement));
assertFalse(processed.contains(target));
上記のスニペットはこの出力を生成します:
Hello World Java!
ターゲットの選択に正規表現が必要な場合は、
replaceAll()
または
replaceFirst()
が最適な方法です。
その名前が示すように、
__replaceAll()
はすべての一致オカレンスを置き換えますが、
replaceFirst()__は最初の一致オカレンスを置き換えます。
String master2 = "Welcome to Baeldung, Hello World Baeldung";
String regexTarget = "(Baeldung)$";
String processed2 = master2.replaceAll(regexTarget, replacement);
assertTrue(processed2.endsWith("Java"));
processed2
の値は次のようになります。
Welcome to Baeldung, Hello World Java
これは、
regexTarget
として指定された正規表現は、最後に出現した
__Baeldungにのみ一致するためです。
上記のすべての例では、空の置換を使用でき、
master
から
target__を効果的に削除できます。
3
StringBuilder
API
StringBuilder
class
__を使ってJavaでテキストを操作することもできます。
ここでの2つのメソッドは
delete()
と
replace()__です。
既存の
String
から
__StringBuilder
のインスタンスを作成してから、上記のメソッドを使用して
String__操作を実行することができます。
String master = "Hello World Baeldung!";
String target = "Baeldung";
String replacement = "Java";
int startIndex = master.indexOf(target);
int stopIndex = startIndex + target.length();
StringBuilder builder = new StringBuilder(master);
これで、
delete()
を使って
target
を削除できます。
builder.delete(startIndex, stopIndex);
assertFalse(builder.toString().contains(target));
replace()
を使ってマスターを更新することもできます。
builder.replace(startIndex, stopIndex, replacement);
assertTrue(builder.toString().contains(replacement));
__StringBuilder
と
String
APIの使用の明らかな違いの1つは、
target__Stringの開始インデックスと終了インデックスを自分で取得することです。
4
StringUtils
クラス
最後に検討する方法は、Apache Commonsライブラリです。
まず、必要な依存関係を私たちのプロジェクトに追加しましょう。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
このライブラリの最新版はhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3Acommons-lang3%20g%3Aorg.apache.commons[ここにあります。]
__StringUtils
classには、
String__の部分文字列を置き換えるメソッドがあります。
String master = "Hello World Baeldung!";
String target = "Baeldung";
String replacement = "Java";
String processed = StringUtils.replace(master, target, replacement);
assertTrue(processed.contains(replacement));
整数の
max
パラメータを取る
replace()
のオーバーロードされた変形があります。そして、それは置き換えられる発生の数を決定します。 ** 大文字と小文字の区別が問題にならない場合は、
replaceIgnoreCase()
を使用することもできます。
String master2 = "Hello World Baeldung!";
String target2 = "baeldung";
String processed2 = StringUtils.replaceIgnoreCase(master2, target2, replacement);
assertFalse(processed2.contains(target));
5結論
結論として、Javaで部分文字列を削除および置換する方法は複数ありました。それでも適用する最善の方法は、現在の状況と状況によって大きく異なります。
いつものように、完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/java-strings[over on Github]から入手できます。