2016-04-18 5 views

Antwort

2

Sie für die Zeichenfolge überprüfen konnte den genauen Wert für „1“, wie diese enthalten:

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

Oder Sie könnten ein Doppelgießen, wie dies tun:

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

die letztere hat den Vorteil, dass es für Strings mit Leerzeichen ("1") oder sogar "01" wahr ist (falls dies wünschenswert ist), aber immer noch "0", "0" oder "00" falsch wären.

Ich habe dieses Q & A hier hinzugefügt, weil ich gerade in dieses Problem von Boolean stolperte ("0") wahr ist. Wenn Sie eine bessere Lösung haben, zögern Sie nicht zu kommentieren.

+1

kommt es vor, in jeder ECMAScript-Implementierung (JavaScript zum Beispiel). – axelduch

1

Wie würden Sie im ersten Fall wahr und im zweiten Fall falsch?

Es gibt eine Vielzahl von Möglichkeiten, '1' und '0' zu true und false jeweils zu konvertieren, aber es ist wichtiger, wie andere Zahlen gegossen werden, wie diese Fälle zu behandeln.

Zum Beispiel, wenn Sie diese Zeichenfolge als Zahlen zu behandeln, und wirft sie boolean, als ob sie Zahlen waren, dann können Sie nur zu gieße Number vor zu Boolean Gießen:

var t = '1'; 
var f = '0'; 

Boolean(Number(t)); //true 
!!+f; //false, terse syntax 

Das bedeutet, dass andere Zahlen ungleich Null wie '-1' wird sich true und nicht-Zahlen, die NaN, wie 'word' konvertieren false werden.

Wenn Sie stattdessen erkannt werden soll, wenn der Wert '1' genau ist, und alles sollte anders false sein, verwenden Sie dann eine einfache Gleichheitsvergleich:

t === '1'; //true 
f === '1'; //false 

Wenn Sie stattdessen, wenn der Wert ermitteln wollen, ist nicht Null, können Sie eine einfache Ungleichheit Vergleich verwenden:

t !== '0'; //true 
f !== '0'; //false 

am Ende, was Angelegenheiten Ihre erwartete Eingangs und ihre jeweiligen erwarteten ausgegeben werden.

+0

Danke für Ihre Antwort. Ich denke, die Verwendung von Boolean (Number()) wäre dasselbe wie die Verwendung von Boolean (int()). Die "knappe Syntax" kompiliert nicht in AS3 im strikten Modus. – OMA

+0

@OMA Intern verwendet Flash Zahlen für alle numerischen Typen und führt zusätzliche Konvertierungen für int(), uint() usw. durch. – Brian

Verwandte Themen