From 431c1183c451878d7b46bbd20c8e37a37f5622b5 Mon Sep 17 00:00:00 2001 From: bwcx_jzy Date: Wed, 16 Dec 2020 19:24:10 +0800 Subject: [PATCH] =?UTF-8?q?URLUtil.normalize(java.lang.String,=20boolean,?= =?UTF-8?q?=20boolean)=20=E6=96=B0=E5=A2=9E=E9=87=8D=E8=BD=BD=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/util/URLUtil.java | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/URLUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/URLUtil.java index 4ba026e38..2633b90b4 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/URLUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/URLUtil.java @@ -14,14 +14,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.JarURLConnection; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLStreamHandler; +import java.net.*; import java.nio.charset.Charset; import java.util.Map; import java.util.jar.JarFile; @@ -693,6 +686,23 @@ public class URLUtil { * @since 4.4.1 */ public static String normalize(String url, boolean isEncodePath) { + return normalize(url, isEncodePath, false); + } + + /** + * 标准化URL字符串,包括: + * + *
+	 * 1. 多个/替换为一个
+	 * 
+ * + * @param url URL字符串 + * @param isEncodePath 是否对URL中path部分的中文和特殊字符做转义(不包括 http:, /和域名部分) + * @param replaceSlash 是否替换url body中的 // + * @return 标准化后的URL字符串 + * @since 4.4.1 + */ + public static String normalize(String url, boolean isEncodePath, boolean replaceSlash) { if (StrUtil.isBlank(url)) { return url; } @@ -720,8 +730,10 @@ public class URLUtil { body = body.replaceAll("^[\\\\/]+", StrUtil.EMPTY); // 替换多个\或/为单个/ body = body.replace("\\", "/"); - //issue#I25MZL,双斜杠在URL中是允许存在的,不做替换 - //.replaceAll("//+", "/"); + //issue#I25MZL,双斜杠在URL中是允许存在的,默认不做替换 + if (replaceSlash) { + body = body.replaceAll("//+", "/"); + } } final int pathSepIndex = StrUtil.indexOf(body, '/');