String “如何演奏弦乐”;1“;及;0“;在AS3中是真是假?
在AS3中,当您尝试使用Boolean()将包含“1”或“0”的字符串强制转换为布尔值时,结果在这两种情况下均为真String “如何演奏弦乐”;1“;及;0“;在AS3中是真是假?,string,actionscript-3,casting,boolean,String,Actionscript 3,Casting,Boolean,在AS3中,当您尝试使用Boolean()将包含“1”或“0”的字符串强制转换为布尔值时,结果在这两种情况下均为真 Boolean("1") // true Boolean("0") // true 如何在第一种情况下为true,在第二种情况下为false?您可以检查字符串是否包含“1”的确切值,如下所示: var myBool:Boolean = (myString === "1"); var myBool:Boolean = Boolean(int(myString)); 或者你可以做
Boolean("1") // true
Boolean("0") // true
如何在第一种情况下为true,在第二种情况下为false?您可以检查字符串是否包含“1”的确切值,如下所示:
var myBool:Boolean = (myString === "1");
var myBool:Boolean = Boolean(int(myString));
或者你可以做一个双重铸造,像这样:
var myBool:Boolean = (myString === "1");
var myBool:Boolean = Boolean(int(myString));
后者的优点是对于带有空格(“1”)甚至“01”的字符串为真(如果需要的话),但“0”、“0”或“00”仍然为假
我在这里添加了这个Q&A,因为我刚刚偶然遇到布尔值(“0”)为真的问题。如果您有更好的解决方案,请随意评论。您可以检查字符串是否包含“1”的确切值,如下所示:
var myBool:Boolean = (myString === "1");
var myBool:Boolean = Boolean(int(myString));
或者你可以做一个双重铸造,像这样:
var myBool:Boolean = (myString === "1");
var myBool:Boolean = Boolean(int(myString));
后者的优点是对于带有空格(“1”)甚至“01”的字符串为真(如果需要的话),但“0”、“0”或“00”仍然为假
我在这里添加了这个Q&A,因为我刚刚偶然遇到布尔值(“0”)为真的问题。如果您有更好的解决方案,请随时发表评论
你如何在第一种情况下得到正确,在第二种情况下得到错误
有多种方法可以将'1'
和'0'
分别转换为true
和false
,但更重要的是如何转换其他数字以处理这些情况
例如,如果要将这些字符串视为数字,并将其强制转换为布尔值,就像它们是数字一样,则可以在强制转换为布尔值之前强制转换为Number
:
var t = '1';
var f = '0';
Boolean(Number(t)); //true
!!+f; //false, terse syntax
这意味着其他非零数字,如'-1'
将变为true
,而转换为NaN
的非数字,如'word'
将变为false
相反,如果要检测值是否准确地为'1'
,而其他所有值都应为false
,则使用简单的相等比较:
t === '1'; //true
f === '1'; //false
t !== '0'; //true
f !== '0'; //false
相反,如果要检测值是否不为零,可以使用简单的不等式比较:
t === '1'; //true
f === '1'; //false
t !== '0'; //true
f !== '0'; //false
最后,重要的是你的预期投入和他们各自的预期产出
你如何在第一种情况下得到正确,在第二种情况下得到错误
有多种方法可以将'1'
和'0'
分别转换为true
和false
,但更重要的是如何转换其他数字以处理这些情况
例如,如果要将这些字符串视为数字,并将其强制转换为布尔值,就像它们是数字一样,则可以在强制转换为布尔值之前强制转换为Number
:
var t = '1';
var f = '0';
Boolean(Number(t)); //true
!!+f; //false, terse syntax
这意味着其他非零数字,如'-1'
将变为true
,而转换为NaN
的非数字,如'word'
将变为false
相反,如果要检测值是否准确地为'1'
,而其他所有值都应为false
,则使用简单的相等比较:
t === '1'; //true
f === '1'; //false
t !== '0'; //true
f !== '0'; //false
相反,如果要检测值是否不为零,可以使用简单的不等式比较:
t === '1'; //true
f === '1'; //false
t !== '0'; //true
f !== '0'; //false
最后,重要的是您的预期输入和它们各自的预期输出。它发生在任何ECMAScript实现中(例如JavaScript)。它发生在任何ECMAScript实现中(例如JavaScript)。谢谢您的回答。我想使用Boolean(Number())和使用Boolean(int())是一样的。“简洁语法”不能在AS3中以严格模式编译。@OMA内部,Flash对所有数字类型使用数字,并对int()、uint()等进行额外转换。谢谢您的回答。我想使用Boolean(Number())和使用Boolean(int())是一样的。“简洁语法”不能在AS3中以严格模式编译。@在内部,Flash对所有数字类型使用数字,并对int()、uint()等进行一些额外的转换。