【问题标题】:Remove an item from ienumerable<string>从 ienumerable<string> 中删除一个项目
【发布时间】:2014-09-23 06:20:22
【问题描述】:

我有一个期望 IEnumerable&lt;string&gt; 的方法,您可以在这里看到:

  public static string FromDecimalAscii(IEnumerable<string> input)
        {

            return new string(input.Select(s => (char)int.Parse(s)).ToArray());
        }

但是每次我的 IEnumerable 的最后一条记录是空的,所以我在这一行出现错误:

    return new string(input.Select(s => (char)int.Parse(s)).ToArray());

所以我必须从我的IEnumerable 中删除该项目。

错误:Input string was not in a correct format 任何想法将不胜感激。

最好的问候

【问题讨论】:

  • 究竟是什么错误?
  • 输入字符串的格式不正确。
  • 我说亲爱的朋友,因为我的最后一项是空字符串

标签: c# string ienumerable


【解决方案1】:

您只需要使用Where 过滤集合:

return new string(input.Where(s => !string.IsNullOrEmpty(s))
                       .Select(s => (char)int.Parse(s)).ToArray());

您也可以通过扩展方式使用TryParse:

static class Extensions
{
    public delegate bool TryParseDelegate<TSource>(string s, out TSource source);

    public static IEnumerable<TResult> WhereParsed<TSource, TResult>(
                                               this IEnumerable<TSource> source,
                                               TryParseDelegate<TResult> tryParse)
    {

         // TODO: check arguments against null first

        foreach (var item in source)
        {
            TResult result;
            if (tryParse(item != null ? item.ToString() : null, out result))
            {
                yield return result;
            }
        }
    }
} 

用法:

var collection = input.WhereParsed<string, int>(int.TryParse)
                      .Cast<char>()
                      .ToArray();
return new string(collection);

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    相关资源
    最近更新 更多