代码之家  ›  专栏  ›  技术社区  ›  halivingston

C对不同变量应用相同的函数

  •  4
  • halivingston  · 技术社区  · 14 年前
    string.Format("{0}, {1}, {2}", var1, var2, var3)
    

    我想对var1、var2和var3中的每一个应用URL编码。它不是数组,所以我不能使用Linq聚合来完成它。

    有什么想法吗?

    我不想在每个变量周围加括号。

    2 回复  |  直到 14 年前
        1
  •  7
  •   dtb    14 年前

    如果你不想 UrlEncode(...) 围绕每个参数或定义一个助手函数,唯一的方法是使隐式创建的数组显式化,并将该方法应用于每个元素:

    var args = new[] { var1, var2, var3 };
    Array.ConvertAll(args, UrlEncode);
    var result = string Format("{0}, {1}, {2}", args);
    

    var args = new[] { var1, var2, var3 };
    var result = string Format("{0}, {1}, {2}", args.Select(UrlEncode).ToArray());
    

    或者,如果您只想在元素之间放置逗号:

    var result = string.Join(", ", new[] { var1, var2, var3 }.Select(UrlEncode));
    

    使用助手函数:

    var result = string.Format("{0}, {1}, {2}", UrlEncodeAll(var1, var2, var3));
    

    var result = string.Join(", ", UrlEncodeAll(var1, var2, var3));
    

    在哪里?

    string[] UrlEncodeAll(params string[] args)
    {
        Array.ConvertAll(args, UrlEncode);
        return args;
    }
    
        2
  •  1
  •   James Curran    14 年前
    void EncodeAndFormat(string format, params object[] args)
    {
         return string.Format(format, 
                 args.Select(obj=>HttpUtility.UrlEncode(obj.ToString()).ToArray());
    }
    
    
    EncodeAndFormat("{0}, {1}, {2}", var1, var2, var3)