2016-08-04 8 views
-2

内の文字列で、私は置換「^」javaの

String slash_data=cap_data.replaceAll("/", "%2F"); 

しかし、「^」それはその位置に置き換えられていないの交換時に使用して、文字列内の他の文字に置き換えます。

String string_data="058000657^HELLO HI /" 
String cap_data=string_data.replaceAll("^", "%5E"); 

この問題は何ですか?

+1

; '... – Tunaki

+3

'文字列capData = stringData.replace( "^"、 "%の5E")...' replaceAll'は正規表現をとり、それをエスケープ – Reimeus

+0

を@ Reimeus私は、私はばかです:D申し訳ありません – f1sh

答えて

4

replaceAllメソッドはリテラル文字列ではなく正規表現を使用し、^は「現在の行の先頭」を意味する正規表現シンボルです。したがって、実際には^文字を探しているわけではありません。

^文字をエスケープする必要があります:代わりに\\^を試してください。

(これはあなたが^続く単一のバックスラッシュから成るように、あなたの文字列を必要とするので、。また、エスケープ文字として文字列働きで単一のバックスラッシュやや紛らわしいです。しかし、あなたはあなたのソース内の単一のバックスラッシュを書く方法あなたがバックスラッシュをエスケープする必要があるので、\\と同じです。)

+0

あなたの説明のおかげで..今私はそれを得た。 –

+0

しかし、それは動作しません.. Reimeusの答えが動作します.. –

3

^は正規表現の特殊文字です。それは文字列の始まりを意味します。だから、あなたはそれをエスケープする必要があります。

String cap_data=string_data.replaceAll("\\^", "%5E");