2011-02-24 15 views

答えて

7

ケビンの答え@String.replace(CharSequence, CharSequence)

String myUrl = "http:\\/\\/www.example.com\\/example"; 
myUrl = myUrl.replace("\\",""); 
+0

それが機能していない、それは無効な文字定数 – Kotibab

+0

を示し、私はちょうどすることを可能にするためにbackslahesを脱出するのを忘れそれらをString定数(編集済み)に入れます。あなたが受け取っている文字列がこのように宣言されていないと仮定します。 –

+0

@ケビン:これは混乱しているのですが、私はなぜ「コティバブ」に「\ /」があるように見えるのか分かりません。ですから @Kotibab:myUrl.replace( "\"、 "");を試してみてください。 (単引用符か二重引用符かどうかわかりませんが、私が書いたように二重でなければなりません) – AudioDroid

6

を参照してくださいには致命的な問題が含まれています。 String.replace(char, char)は、ある文字の出現を別の文字に置き換えます。文字は削除されません。

''は、空の文字がないため有効なJavaではありません。ここで

は実際に動作すべきいくつかのソリューションです(とコンパイル!):

String myUrl = "http:\\/\\/www.example.com\\/example"; 
    fixedUrl = myUrl.replace("\\", ""); 

これは単に文脈を考慮せずに、すべてのバックスラッシュを削除します。

fixedUrl = myUrl.replace("\\/", "/"); 

エスケープされたスラッシュをプレーンスラッシュに置き換えます。

fixedUrl = myUrl.replaceAll("\\\\(.)", "\\1"); 

この「脱エスケープ」文字列内の任意エスケープシーケンスは、正しくエスケープバックスラッシュを処理し、末尾のバックスラッシュを削除しません。このバージョンでは、グループを使用してバックスラッシュの後の文字を取得し、置換文字列内の文字を参照します。

最後のケースでは、リテラルのString match/replaceではなく、regex match/replaceを行うreplaceAllメソッドを使用しています。したがって、最初の引数のバックスラッシュを2回エスケープする必要があります。これは、文字列リテラルでバックスラッシュをエスケープする必要があるためです。また、バックスラッシュをリテラルのバックスラッシュ文字にするには、バックスラッシュを正規表現でエスケープする必要があるためです。


私は、任意の関連性がある場合には、ブラックベリーのシステムのためのプログラミングしています。

です。ブラックベリーはJ2MEプラットフォームであり、Stringjavadocを参照)のみをサポートしています。上記のように、文字を削除することはできません。 J2MEプラットフォームではStringStringBufferにロードし、ループとStringBuffer.delete(...)またはStringBuffer.replace(...)を使用する必要があります。

(これはAndroidを使いやすくするようなものです...)

+0

ありがとうございました – Kotibab

0

これを試してみてください:

return myUrl.replaceAll("\\\\(.)", "\\/"); 
0

これだけは私の作品 -

String url = "http:\/\/imgd2.aeplcdn.com\/310x174\/cw\/cars\/ford\/ford-figo-aspire.jpg"; 

    for(int i = 0; i < url.length(); i++) 
     if(url.charAt(i) == '\\') 
      url = url.substring(0, i) + url.substring(i + 1, url.length()); 
関連する問題