如何使用Java正则表达式替换URL中的所有特殊字符?

时间:2011-08-12 22:19:16

标签: java regex

我正在尝试使用正则表达式来转换网址中的特殊字符。这是我的示例代码:

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

我要做的是转换网址中的特殊字符,例如?_%。 “ - ”不包括“/".

我的代码中的正则表达式将输出的所有内容转换为

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

但我希望它是

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

任何指针都将受到赞赏。

3 个答案:

答案 0 :(得分:9)

您可以将/添加到正则表达式中:

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

答案 1 :(得分:6)

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

答案 2 :(得分: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