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

将char数组/字符串转换为bool数组

  •  2
  • Peter  · 技术社区  · 14 年前

    我需要把这个值转换成一个布尔数组。

    为此,我编写了以下代码:

    char[] freqs = weekdayFrequency.ToCharArray();
    bool[] weekdaysEnabled = new bool[]{
        Convert.ToBoolean(int.Parse(freqs[0].ToString())), 
        Convert.ToBoolean(int.Parse(freqs[1].ToString())),
        Convert.ToBoolean(int.Parse(freqs[2].ToString())),
        Convert.ToBoolean(int.Parse(freqs[3].ToString())),
        Convert.ToBoolean(int.Parse(freqs[4].ToString())),
        Convert.ToBoolean(int.Parse(freqs[5].ToString())),
        Convert.ToBoolean(int.Parse(freqs[6].ToString()))
    };
    

    我觉得这种方式太笨重了,因为转换太多了。

    将这个固定长度的字符串转换成布尔数组的最理想/最干净的方法是什么??

    我知道你可以用for循环写这个,但是一周中的天数永远不会改变,因此我认为这是一个更有效的方法。

    2 回复  |  直到 14 年前
        1
  •  11
  •   Noldorin    14 年前

    var weekdaysEnabled = weekdayFrequency.Select(chr => chr == '1').ToArray();
    

    请注意 string IEnumerable<char> ,因此可以直接对其使用LINQ方法。

        2
  •  2
  •   Florian    14 年前

    在.NET 2中

    bool[] weekdaysEnabled1 =
    Array.ConvertAll<char, bool>(
        freqs,
        new Converter<char, bool>(delegate(char c) { return Convert.ToBoolean(int.Parse(freqs[0].ToString())); }));