我想用单个斜杠替换网址中的所有多个正斜杠。我尝试使用String replaceAll()
regex,但它不起作用。
示例案例:
https://localhost/app//page1
应该返回 https://localhost/app/page1
https://localhost/app//page1//subpage1
应该返回 https://localhost/app/page1/subpage1
//page1//subpage1
应该返回 /page1/subpag1
您可以像这样使用带有lookbehind的正则表达式:
(?<!https:)\/\/
Run Code Online (Sandbox Code Playgroud)
//
仅当https:
之前不存在时才会删除。
你可以使用这个java代码:
String url = "https://localhost/app//page1".replaceAll("(?<!https:)\\/\\/", "/");
System.out.println(url);
Run Code Online (Sandbox Code Playgroud)
您不需要为此推出自己的解决方案。Java提供了可用于URI和URL的类。
import java.net.URI;
import java.net.URISyntaxException;
public class URLTest {
private static final String VICTIM = "https://localhost/app//page1//subpage1";
public static void main(String[] args) throws URISyntaxException {
URI uri = new URI(VICTIM);
System.out.println("before: " + uri);
uri = uri.normalize();
System.out.println("after: " + uri);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
before: https://localhost/app//page1//subpage1
after: https://localhost/app/page1/subpage1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6644 次 |
最近记录: |