String 此场景中字符串到布尔值转换的最短方法
对于输入参数,我有4个可能的[string]值——“0”、“1”、“false”、“true” 这些可能的值需要转换为布尔值。“0”映射为false,“1”映射为true,字符串“false”和“true”映射为相应的布尔值String 此场景中字符串到布尔值转换的最短方法,string,c#-4.0,int,boolean,.net-4.5,String,C# 4.0,Int,Boolean,.net 4.5,对于输入参数,我有4个可能的[string]值——“0”、“1”、“false”、“true” 这些可能的值需要转换为布尔值。“0”映射为false,“1”映射为true,字符串“false”和“true”映射为相应的布尔值 做这件事的最短和最佳方法是什么?您可以包括str==“1”: 值得一提的是,一种扩展方法: public static bool ParseBool(this string input, bool oneIsTrue = true) { bool b; re
做这件事的最短和最佳方法是什么?您可以包括
str==“1”
:
值得一提的是,一种扩展方法:
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());
}
我认为这应该做到:
//string value is stored in str
boolean bool = (str.equals("0")||str.equals("false"))?false:true;
试试这个简单的
string[] ar = { "0", "1", "true", "false" };
var boolArray = ar.Select(x => (x=="1"||x=="true")?true:false).ToArray();
这与您最初的答案完全不同;)但是,
out b
引用有什么用呢?@Moriarty:这个扩展相当于foreach
,不是吗?我添加扩展只是因为OP要求最短的代码。没有比str.ParseBool()更短的了。使用bool.TryParse
时需要out
。这是一个out
参数。投票-1因为“最短和最佳”的问题可能只有基于意见的答案,您不提供任何可测量的场景,它属于这一类别
string[] ar = { "0", "1", "true", "false" };
var boolArray = ar.Select(x => (x=="1"||x=="true")?true:false).ToArray();