【问题标题】:Convert char Array/string to bool Array将 char 数组/字符串转换为 bool 数组
【发布时间】:2011-03-22 14:01:03
【问题描述】:

我们的数据库中有一个字段表示一周中每一天的真/假标志,如下所示:'1111110'

我需要将此值转换为布尔数组。

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

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 循环中编写此代码,但一周中的天数永远不会改变,因此我认为这是更高效的方式。

【问题讨论】:

    标签: c# arrays string boolean


    【解决方案1】:

    一点 LINQ 可以使这成为一项非常微不足道的任务:

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

    注意string已经实现了IEnumerable<char>,所以你可以直接使用LINQ方法。

    【讨论】:

    • 在比较字符时,测试应该是chr == '1'
    • 这就是我喜欢 stackoverflow 的原因,你问一个问题,一分钟后你就会得到答案;D 你必须将双引号更改为单引号,尽管我们正在处理字符,但除此之外这可以编译:D 谢谢!
    • @Darin:下次您可以随意编辑帖子,因为它显然是一个错字。 ;)
    • @Peter:没问题,很高兴它完成了这项工作。
    【解决方案2】:

    在 .NET 2 中

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

    【讨论】:

    • weekdaysEnabled1 是错误的:'allWeekdays' 是对的 只是语法更简洁,但我认为转换的次数是一样的 :( 不知道为什么 public static bool ToBoolean(char value ) 方法没有在框架中实现
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2016-08-13
    • 2011-10-04
    • 2013-04-25
    • 2012-11-04
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多