【问题标题】:Shortest method for string to boolean conversion in this scenario在这种情况下字符串到布尔转换的最短方法
【发布时间】:2014-06-10 14:27:31
【问题描述】:

我有 4 个可能的 [string] 输入参数值 - “0”、“1”、“false”、“true”。

这些可能的值需要转换为布尔值。 “0”映射为 false,“1”映射为 true,字符串“false”和“true”映射为相应的布尔值。

执行此操作的最短和最佳方法是什么?

【问题讨论】:

  • 投票 -1 因为这个“最短和最佳”问题可能只有基于意见的答案,您没有提供任何可衡量的场景,它属于 stackoverflow.com/help/dont-ask 类别

标签: string c#-4.0 int boolean .net-4.5


【解决方案1】:

我认为应该这样做:

//string value is stored in str
boolean bool = (str.equals("0")||str.equals("false"))?false:true;

【讨论】:

    【解决方案2】:

    你可以包括str == "1":

    foreach(string str in new[]{ "0", "1", "false", "true"})
    {
        bool isTrue;
        isTrue = Boolean.TryParse(str, out isTrue) || str == "1";
        Console.WriteLine(isTrue);
    }
    

    不管怎样,一个扩展方法:

    public static bool ParseBool(this string input, bool oneIsTrue = true)
    {
        bool b;
        return (oneIsTrue && input == "1") || bool.TryParse(input, out b);
    }
    
    // ...
    foreach(string str in new[]{ "0", "1", "false", "true", "True", "TRUE"})
    {
        Console.WriteLine(str.ParseBool());
    }
    

    【讨论】:

    • 这与你原来的答案中的 foreach 完全不同;)但是out b 参考是什么?
    • @Moriarty:扩展名相当于foreach,不是吗?我添加扩展只是因为 OP 要求最短的代码。没有比str.ParseBool() 更短的了。 out 是使用 bool.TryParse 所必需的。这是一个out 参数。
    【解决方案3】:

    试试这个简单的。

    string[] ar = { "0", "1", "true", "false" };
    var boolArray = ar.Select(x => (x=="1"||x=="true")?true:false).ToArray();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-12
      • 2023-03-31
      • 2013-06-09
      • 1970-01-01
      • 2015-11-16
      • 2015-11-30
      • 2014-09-21
      • 1970-01-01
      相关资源
      最近更新 更多