【问题标题】:Merge 2 Urls having common part合并 2 个具有共同部分的 Url
【发布时间】:2019-10-11 23:47:05
【问题描述】:

我有 2 个网址:

1. "C:/inetpub/wwwroot/XYZ/"
2. "/XYZ/Media/Default"

我想将两者结合起来得到"C:/inetpub/wwwroot/XYZ/Media/Default"

我该怎么做?请注意,这两个 Url 的类型都是 string

【问题讨论】:

    标签: c# asp.net asp.net-mvc url


    【解决方案1】:

    您可以根据分隔符 "/" 拆分两个 URL,然后将两个列表合并,不重复如下:

    using System;
    using System.Linq;
    
    public class Program
    {
        public static void Main()
        {
            var url1 = "C:/inetpub/wwwroot/XYZ/";
            var url2 = "/XYZ/Media/Default";
            var f = url1.Split(new[]{'/'},StringSplitOptions.RemoveEmptyEntries);
            var s = url2.Split(new[]{'/'},StringSplitOptions.RemoveEmptyEntries);
            var fullurl = string.Join("/", f.Concat(s).Distinct());
            Console.WriteLine(fullurl);
        }
    }
    

    输出:

    C:/inetpub/wwwroot/XYZ/Media/Default
    

    此解决方案适用于所有情况,即使相交多于一个目录

    【讨论】:

    • 如果嵌套文件夹与其父文件夹同名怎么办?喜欢C:/Media/Media/File.txt。我认为结果将是错误的。
    【解决方案2】:

    如果它们总是具有相同的形式,那么你可以这样做

    string url = string.Concat(url1.Trim(new[] {'/'}), url2);
    

    【讨论】:

    • 有没有办法用System.IOPath.Combine 这样的函数来做到这一点?
    猜你喜欢
    • 2020-10-27
    • 2015-12-04
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2016-06-13
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多