[objective-c] NSStringをNSNumberに変換する方法



8 Answers

しかし、 -[NSString integerValue]-[NSString floatValue]などを使用することができます。しかし、これを行う正しい(ロケールに敏感な、など)方法は-[NSNumberFormatter numberFromString:]を使用することです。適切なロケールを指定し、 NSNumberFormatter (浮動小数点値を許可するかどうかを含む)の設定を与えます。

Question

どのようにして、任意のプリミティブデータ型( intfloatcharunsigned intなど)を含むNSStringを変換できますか? 問題は、実行時に文字列に含まれる数値型がわからないことです。

私はそれを行うアイデアを持っていますが、これは任意の型で動作するかどうかはわかりません、また、符号なしと浮動小数点値:

long long scannedNumber;
NSScanner *scanner = [NSScanner scannerWithString:aString];
[scanner scanLongLong:&scannedNumber]; 
NSNumber *number = [NSNumber numberWithLongLong: scannedNumber];

助けてくれてありがとう。




@"123"@"456 ft"@"7.89"などの整数で始まる文字列については、 -[NSString integerValue]使用します。

だから、 @([@"12.8 lbs" integerValue])[NSNumber numberWithInteger:12]ようなものです。




extension String {

    var numberValue:NSNumber? {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        return formatter.number(from: self)
    }
}

let someFloat = "12.34".numberValue



このコードのようにすることもできます8.3.3 ios 10.3のサポート

[NSNumber numberWithInt:[@"put your string here" intValue]]



私は文字列をダブルに変換したかったのです。 この上の答えは私のためにはうまくいかなかった。 これはObjective-Cで文字列変換を行う方法ですか?

私はかなり多くのことをしました:

double myDouble = [myString doubleValue];



NSDecimalNumberはそれを行います:

例:

NSNumber *theNumber = [NSDecimalNumber decimalNumberWithString:[stringVariable text]]];

NSDecimalNumberはNSNumberのサブクラスなので、暗黙的なキャストは可能です。




あなたは[string intValue][string floatValue][string doubleValue]などを使うことができます

NSNumberFormatterクラスを使用することもできます:




私はこれが非常に遅いが、コードの下で私のために働いていることを知っている。

このコードを試してください

NSNumber *number = @([dictionary[@"keyValue"] intValue]]);

これはあなたを助けるかもしれません。 ありがとう




整数を受け取っていることがわかっている場合は、次のものを使用できます。

NSString* val = @"12";
[NSNumber numberWithInt:[val intValue]];



Related