clith

最坚强的蜗牛~

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

程序集 System.Core.dll中的System.Linq命名空间添加了许多扩展方法,看到

public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func)

使用这个方法去除文件名中的非法字符,一行代码就可以搞定。

用Reflector查看一下源码:

public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func)
{
    if (source == null)
    {
        throw Error.ArgumentNull("source");
    }
    if (func == null)
    {
        throw Error.ArgumentNull("func");
    }
    TAccumulate local = seed;
    foreach (TSource local2 in source)
    {
        local = func(local, local2);
    }
    return local;
}

  实际使用:

private static readonly char[] InvalidFileNameChars = new[]
                                                                  {
                                                                      '"',
                                                                      '<',
                                                                      '>',
                                                                      '|',
                                                                      '\0',
                                                                      '\u0001',
                                                                      '\a',
                                                                      '\b',
                                                                      ':',
                                                                      '*',
                                                                      '?',
                                                                      '\\',
                                                                      '/'
                                                                  };

        static void Main(string[] args)
        {
        }

        public static string CleanInvalidFileName(string fileName)
        {
            //...
            fileName = InvalidFileNameChars.Aggregate(fileName, (current, c) => current.Replace(c + "", ""));
            //...
            return fileName;
        }

  使用Lambda表达式可以使代码看起来更简洁。

posted on 2012-10-06 09:33  capad  阅读(423)  评论(0编辑  收藏  举报