2011-08-12 3 views
1

私は正規表現を使用してURLの特殊文字を変換しようとしています。URLのすべての特殊文字を、Javaの正規表現を使用して置き換えるにはどうすればよいですか?

String formatUrl = "index.php?title=Test/enu/test/Tips_%26_Tricks/Tips_and_Tricks"; 
formatUrl = formatUrl.replaceAll("[^a-zA-Z0-9]" , "-"); 

私は何をしようとしていることのようなURLに特殊文字を変換することです_%:?ここに私のサンプルコードです。 "/"を除いて "/"になります。

私のコードでの正規表現は、

index-php-title-Test-enu-test-Tips--26-Tricks-Tips-and-Tricks 

として出力する結果のすべてを変換しかし、私はそれが

index-php-title-Test/enu/test/Tips--26-Tricks/Tips-and-Tricks 

任意のポインタが理解されるであろうようにしたいです。

+0

正規表現の仕組みを理解できていないことを示しています...正規表現のチュートリアルを読んで、その答えの仕組みを理解することをお勧めします。 –

答えて

4
formatUrl = formatUrl.replaceAll("[^a-zA-Z0-9/]" , "-"); 
+1

私が探していたもの。どうもありがとう。 – Shamik

8

あなたは自分の/の正規表現に追加することができます。私はあなたが達成しようとしているかと思っています

"[^a-zA-Z0-9/]" 
+0

私は彼がuri-encodeしたいとは思わない。 –

+0

@PaulPRO ..あなたの返事に感謝します.Plsは私の答えを見つけます。なぜ私はJavaのエンコード/デコードを見ていないのか説明します。 – Shamik

2

。なぜURLをデコードしないのですか?

final String url = "index.php?title=Test/enu/test/Tips_%26_Tricks/Tips_and_Tricks"; 
final String decoded = java.net.URLDecoder.decode(url, "UTF-8"); 
System.out.println(decoded); // Prints index.php?title=Test/enu/test/Tips_&_Tricks/Tips_and_Tricks 
+0

お返事ありがとうございます。私の要件は、制御文字を変換するのではなく、URLのデコードではありません。これはS3キーに変換され、?=などの問題が発生します.S3のフォルダベースの構造に変換するには、 "/"を保持する必要があります。あなたの助けをありがとう。 – Shamik

+1

@Shamik:このような情報は、2ページ分のコメントではなく、質問に記載する必要があります。 –

+1

@Tim:必ずしもそうではありません。質問では、彼は彼が達成しようとしていることを正確に述べました。なぜ彼がそれを達成しようとしていたのかは本当に問題ではありません。私はホイポロイがOPを推測しようとしていたと思う。 –