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]から入手できます。