2016-04-18 67 views

回答

2

您可以檢查該字符串包含「1」的確切值,就像這樣:

var myBool:Boolean = (myString === "1"); 

或者你可以做一個雙鑄造,像這樣:

var myBool:Boolean = Boolean(int(myString)); 

後者對於帶有空白(「1」)或甚至「01」的字符串(如果這是可取的),但仍然是「0」,「0」或「00」是錯誤的。

我已經添加過這個Q &因爲我剛剛偶然發現了這個布爾(「0」)的問題。如果您有更好的解決方案,請隨時發表評論。

+1

它發生在任何ECMAScript實現(例如JavaScript)中。 – axelduch

1

如何在第一種情況下獲得真實性並在第二種情況下獲得假?

有多種方式分別'1''0'轉換爲truefalse,但更重要其他數字是如何投給如何處理這些案件。

舉例來說,如果你要正確對待這些字符串爲數字,並將他們爲boolean,好像他們是數字,那麼你可以轉換爲Number鑄造Boolean前:

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 

最終真正重要的是你期望的輸入和它們各自的預期輸出。

+0

感謝您的回答。我想使用布爾(Number())將使用布爾(int())相同。 「簡潔語法」在嚴格模式下不能在AS3中編譯。 – OMA

+0

@OMA在內部,Flash對所有數字類型使用Number,併爲int(),uint()等進行一些額外的轉換。 – Brian

相關問題