【问题标题】:combine three parts结合三个部分
【发布时间】:2010-11-22 02:31:56
【问题描述】:

Path.combine 只能组合两个字符串,有没有快速组合三个和四个字符串的方法?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    升级到 .Net 4.0,添加了overloads you're looking for


    如果您卡在 .Net 3.5 中,可以多次调用 Path.Combine

    如果你有IEnumerable<string>,你可以写

    string path = strings.Aggregate(Path.Combine);
    

    【讨论】:

    • 哇,我没有意识到他们将 foldl 添加到 .Net 4.0。不错。
    • @jtdubs:它从 C# 3.0 开始就存在了。
    • @SLaks: foldl 在函数式编程中被左折叠。与 C# 中的 Enumerable.Aggregate 相同。您还会看到foldr,它与Enumerable.Reverse().Aggregate 相同。该符号来自 Haskell。
    • LINQ 包含许多不同名称的函数式编程元素。
    【解决方案2】:

    我不是 C# 程序员,但类似

    string s = Path.Combine("str1", Path.Combine("str2", Path.Combine("str3", "str4")));
    

    看起来很明显。

    【讨论】:

      【解决方案3】:

      如果您可以升级到 .NET 4.0,那么它就会满足您的需求。

      否则:

      public string Combine(IEnumerable<string> strings) {
          return strings.Aggregate((x, y) => Path.Combine(x, y));
      }
      

      public string Combine(params string[] strings) {
          return Combine((IEnumerable<string>)strings);
      }
      

      【讨论】:

      • @SLaks:哇。不知道那个超载。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2017-01-22
      • 2011-03-30
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2020-11-08
      • 2021-09-28
      • 2021-08-21
      相关资源
      最近更新 更多