web-dev-qa-db-ja.com

Javaの文字列内のドット(。)を置換する方法

persons.nameという文字列があります

DOT ./*/に置き換えます。つまり、出力はpersons/*/nameになります。

私はこのコードを試しました:

String a="\\*\\";
str=xpath.replaceAll("\\.", a);

StringIndexOutOfBoundsExceptionを取得しています。

ドットを置き換えるにはどうすればよいですか?

73

ドットの前に2つのバックスラッシュが必要です。1つはスラッシュをエスケープして抜けるため、もう1つはドットをエスケープしてリテラルにするために必要です。スラッシュとアスタリスクはリテラルとして扱われます。

str=xpath.replaceAll("\\.", "/*/");          //replaces a literal . with /*/

http://docs.Oracle.com/javase/7/docs/api/Java/lang/String.html#replaceAll(Java.lang.String、%20Java.lang.String)

130
Femi

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);
9
palacsint

単純な文字列を置換する場合で、正規表現の機能が必要ない場合は、replaceではなく replaceAll を使用できます。

replaceは、一致する各部分文字列を置き換えますが、その引数を正規表現として解釈しません。

str = xpath.replace(".", "/*/");
4
khelwood

return statement.replaceAll( "\ s"、 "。");

0
Smart Engineers