0

私は以下のプログラムを持っています:

String one = "Hello I am IN (?)";
String two = one.replaceFirst(" IN (?)", " IN ('one','two')");
System.out.println(two);

出力は次のとおりです。

Hello I am IN ('one','two')(?)

私が期待している出力は次のとおりです。

Hello I am IN ('one','two')

どうした?これはreplaceFirst、正規表現として最初の引数を持つメソッドに関係しています。

4

3 に答える 3

0

の最初のパラメーターは正規表現であるため、正規表現で特別な意味を持つasreplaceFirst()をエスケープする必要があります(メタ文字を読み取る)。(?)(?)

String two = one.replaceFirst(" IN \\(\\?\\)", " IN ('one','two')");

エスケープを避けるためにreplace()、置換文字列として正規表現を使用しないメソッドを使用できます。

String two = one.replace(" IN (?)", " IN ('one','two')");
于 2013-10-23T11:41:40.650 に答える