指定された入力が文字列か double かを確認するにはどうすればよいですか? 私は試してみ[self.display.text doubleValue]
ましたが、それが有効な double でない場合は 0 を返しますが、問題は 0 が実際の double の有効な入力であるため、プログラムはそれがデフォルトのエラー フォールバックなのか実際の有効な入力なのかを判断できないことです。
これをどのように回避しますか?
指定された入力が文字列か double かを確認するにはどうすればよいですか? 私は試してみ[self.display.text doubleValue]
ましたが、それが有効な double でない場合は 0 を返しますが、問題は 0 が実際の double の有効な入力であるため、プログラムはそれがデフォルトのエラー フォールバックなのか実際の有効な入力なのかを判断できないことです。
これをどのように回避しますか?
-[NSFormatter getObjectValue:forString:range:error:]
あなたが望むことをします。
詳細はこちら。
正規表現と NSPredicate を使用して、double 値であるかどうかをテストできます。
NSPredicate *predicate;
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '^[-+]?[0-9]*\.?[0-9]+$'"];
BOOL result = [predicate evaluateWithObject:@"yourdoublevaluehere"];
頭のてっぺんから書いたので、正規表現を調整する必要があるかもしれません。
strtod
( reference )を使用して「C」の方法で実行すると、最後に解析された文字が得られます。
NSString *input = @"123.456";
char *endptr;
double value = strtod([input UTF8String], &endptr);
if (*endptr != '\0')
{
NSLog(@"input is a string");
}