Javaで文字列のドット(。)を置き換える方法


87

私はという文字列を持っています persons.name

DOT.を次のように置き換えたい、/*/ つまり出力はpersons/*/name

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

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

StringIndexOutOfBoundsExceptionが発生しています。

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

回答:


147

ドットの前に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)


1
そうではないxpath.replaceAll("\\\\.", "/*/")ですか?
ha9u63ar 2017

9

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

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

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

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

1
これは受け入れられた答え、IMOでなければなりません。
アーロンレーマン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.