NSString
で表される文字列の真偽値を判定するには boolValue
メソッドが使える。
@property (readonly) BOOL boolValue NS_AVAILABLE(10_5, 2_0);
数字、YES/NO、true/false などの文字列を boolValue
メソッドで判定できる
NSLog(@"%d", @"1".boolValue);
NSLog(@"%d", @"0".boolValue);
NSLog(@"%d", @"YES".boolValue);
NSLog(@"%d", @"NO".boolValue);
NSLog(@"%d", @"true".boolValue);
NSLog(@"%d", @"false".boolValue);
ドキュメントによれば最初の文字が Y
, y
, T
, t
または1~9の数字だとYESを返すとの事。
よって以下は全てYES
NSLog(@"%d", @"Y".boolValue);
NSLog(@"%d", @"y".boolValue);
NSLog(@"%d", @"T".boolValue);
NSLog(@"%d", @"t".boolValue);
NSLog(@"%d", @"1".boolValue);
NSLog(@"%d", @"9".boolValue);
以下のような文字列も最初の1文字で評価されるので全てYES
NSLog(@"%d", @"Yabc".boolValue);
NSLog(@"%d", @"yNO".boolValue);
NSLog(@"%d", @"tfalse".boolValue);
また先頭文字列のスペースは無視される、
文字列が数字の場合、先頭文字列の0の連続は無視される、0の連続の前に置かれる+
と-
の記号は無視されるという仕様があるので以下のケースも全てYESになる。
NSLog(@"%d", @" y".boolValue);
NSLog(@"%d", @"001".boolValue);
NSLog(@"%d", @"+1".boolValue);
NSLog(@"%d", @"-1".boolValue);
NSLog(@"%d", @"+01".boolValue);
NSLog(@"%d", @"-001".boolValue);
以下のケースは全てNOになる。
NSLog(@"%d", @"- 1".boolValue);
NSLog(@"%d", @"- t".boolValue);
NSLog(@"%d", @"00y".boolValue);
NSLog(@"%d", @"00t".boolValue);
NSLog(@"%d", @"++001".boolValue);
NSLog(@"%d", @"++1".boolValue);