Java PHP の preg_replace_callback と同等
PHP では、preg_replace_callback() 関数は、一致に基づいて文字列を変更する便利な方法を提供します。正規表現。一致するたびにユーザー定義関数を呼び出し、文字列の変更されたコピーを返します。この機能は、一致したテキストに複雑な変更を適用する必要がある場合に特に便利です。
Java には、preg_replace_callback() に直接相当するものはありませんが、Pattern クラスと Matcher クラスを使用して同様の効果を実現できます。 Pattern はコンパイルされた正規表現を表し、Matcher は指定されたテキストに対してパターンを照合する特定のインスタンスを表します。 Matcher オブジェクトで find() メソッドを繰り返し呼び出すことで、テキスト内のすべての一致を見つけることができます。
Java で preg_replace_callback() をエミュレートするには、ループを使用して各一致を個別に処理できます。ループ内では、Matcher の group() メソッドを使用して、一致したテキストを取得できます。その後、一致したテキストにカスタム変更を適用できます。結果として得られる変更されたテキストは StringBuffer オブジェクトに蓄積されます。最後に、StringBuffer オブジェクトの内容を変更された文字列として返すことができます。
Java で preg_replace_callback() の機能を実現する方法を示す例を次に示します。
import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.StringBuffer; class Main { public static void main(String[] args) { String subjectString = "[thumb1][thumb2]"; Pattern regex = Pattern.compile("\[thumb(\d+)\]"); Matcher regexMatcher = regex.matcher(subjectString); StringBuffer resultString = new StringBuffer(); while (regexMatcher.find()) { // Custom modification based on the match String replacement = "<img src=\"thumbs/" + Integer.parseInt(regexMatcher.group(1)) + "\">"; regexMatcher.appendReplacement(resultString, replacement); } regexMatcher.appendTail(resultString); System.out.println(resultString); // prints <img src="thumbs/1"> <img src="thumbs/2"> } }
この例では、たとえば、subjectString には、正規表現 [thumbd ] に対する 2 つの一致が含まれています。ループは各一致を繰り返し、一致した数字を取得して、一致したテキストをカスタム置換に置き換えます。変更されたテキストは resultString 変数に蓄積されます。最後に、resultString の内容が変更された文字列として返されます。
Matcher クラスの appendReplacement() メソッドと appendTail() メソッドを使用すると、PHP の preg_replace_callback() と同様の効果を Java で実現できます。 PHP の関数ほど簡潔ではないかもしれませんが、このアプローチは変更プロセスに対する柔軟性と制御を提供し、複雑な文字列操作タスクに適しています。
以上がPHP の `preg_replace_callback()` の機能を Java で実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。