「こんにちは、アミーゴ!」

「私の知る限り、リシは正規表現についてすでに話しました。」

「はい、とても面白かったです。」

「わかりました。次に、正規表現を使用して文字列を操作する方法について説明します。」

「最も単純な質問から始めましょう。」

1) 文字列が正規表現で指定されたパターンと一致するかどうかを確認するにはどうすればよいですか?

「これにはmatchesメソッドがあります。正規表現を含むStringを渡すと、メソッドはtrueまたはfalseを返します。」

方法
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
結果:

false (the String doesn't start with "news")

2) 一致するすべての部分文字列を別の文字列に置き換えるにはどうすればよいですか?

これには2つの方法があります。

replaceAllメソッドは、出現する部分文字列をすべて別の文字列に置き換えます。」

replaceFirstメソッドは、渡された部分文字列の最初の出現を指定された文字列に置き換えます。」

方法
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("e\\.","EX");
結果:

s2 == "Good nEXs EXEXyonEX";
String replaceFirst(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceFirst("e\\.","EX");
結果:

s2 == "Good nEXs, everyone!";

3) 文字列を複数の部分に分割するにはどうすればよいですか?

"このために、区切りマスクを受け取る Split メソッドがあります。"

方法
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
結果 (3 つの文字列の配列):

[Good , ws everyo, !]
"Good ", "ws everyo", "!";

StringTokenizerクラスは、文字列を部分に分割するもう 1 つの方法です。」

「このクラスは正規表現を使用しません。代わりに、一連の区切り文字を含む文字列を渡すだけです。このアプローチの利点は、文字列全体を一度に複数の部分に分割するのではなく、ゆっくりと次の部分に移動することです。最初から最後まで。」

「クラスは 1 つのコンストラクターと 2 つのメソッドで構成されます。分割する文字列を、一連の区切り文字を含む文字列とともにコンストラクターに渡す必要があります。」

nextToken メソッドは、次のトークン (部分文字列) を返します。

hasMoreTokens() メソッドは、まだ返されていない部分文字列がある場合に true を返します。

方法
boolean hasMoreTokens()

String nextToken()
String s = "Good news, everyone!";

StringTokenizer tokenizer =
new StringTokenizer(s,"ne");
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
System.out.println(token);
}
画面出力:

Good
ws
v
ryo
!

「 StringTokenizerコンストラクターに渡される 2 番目の String 内の文字はすべて区切り文字として扱われることに注意してください。」

「もう一度言いますが、すべてが明確になったようです。すぐにこのコードをすべて自分で書くことはできないかもしれませんが、ここで何が起こっているのかは理解できました。」

「わかりました。それでは、あなたはこのトピックを習得したものとみなします。」