Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将url中的所有正斜杠替换为一个斜杠_Java_Regex_String - Fatal编程技术网

Java 将url中的所有正斜杠替换为一个斜杠

Java 将url中的所有正斜杠替换为一个斜杠,java,regex,string,Java,Regex,String,我想用单斜杠替换url中的所有多个正斜杠。我尝试使用StringreplaceAll()regex,但不起作用 示例案例: https://localhost/app//page1应返回为https://localhost/app/page1 https://localhost/app//page1//subpage1应返回为https://localhost/app/page1/subpage1 //page1//subpage1应返回为/page1/subpag1 您必须分配返回值: url

我想用单斜杠替换url中的所有多个正斜杠。我尝试使用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

  • 您必须分配返回值:

    url=url.replaceAll(“//*”,“/”)


    此方法不能直接处理传递的字符串。它返回包含替换部分的新字符串。

    您可以使用带有lookback的正则表达式,如下所示:

    (?<!https:)\/\/
    

    您不需要为此推出自己的解决方案。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);
        }
    }
    
    产出:

    before: https://localhost/app//page1//subpage1
    after:  https://localhost/app/page1/subpage1
    
    你可以试试这个

    字符串值=”

    字符串结果=value.replaceAll(“(/)”,“/”)


    系统输出打印项次(结果)

    向我们展示如何尝试使用durl.replaceAll(“//*”,“/”);这将使用single(上述列表中的第三种情况)更新//。我不知道如何修复1和2种情况您想替换所有
    /
    ,除了
    https:
    before: https://localhost/app//page1//subpage1
    after:  https://localhost/app/page1/subpage1