persons.name
という文字列があります
DOT .
を/*/
に置き換えます。つまり、出力はpersons/*/name
になります。
私はこのコードを試しました:
String a="\\*\\";
str=xpath.replaceAll("\\.", a);
StringIndexOutOfBoundsExceptionを取得しています。
ドットを置き換えるにはどうすればよいですか?
ドットの前に2つのバックスラッシュが必要です。1つはスラッシュをエスケープして抜けるため、もう1つはドットをエスケープしてリテラルにするために必要です。スラッシュとアスタリスクはリテラルとして扱われます。
str=xpath.replaceAll("\\.", "/*/"); //replaces a literal . with /*/
Apache Commons Lang を使用します。
String a= "\\*\\";
str = StringUtils.replace(xpath, ".", a);
またはスタンドアロンJDKの場合:
String a = "\\*\\"; // or: String a = "/*/";
String replacement = Matcher.quoteReplacement(a);
String searchString = Pattern.quote(".");
String str = xpath.replaceAll(searchString, replacement);
単純な文字列を置換する場合で、正規表現の機能が必要ない場合は、replace
ではなく replaceAll
を使用できます。
replace
は、一致する各部分文字列を置き換えますが、その引数を正規表現として解釈しません。
str = xpath.replace(".", "/*/");
return statement.replaceAll( "\ s"、 "。");