Wie kann ich konvertiere ein NSString
eine Reihe von jedem primitiven Datentyp enthält (zB int
, float
, char
, unsigned int
, etc.)? Das Problem ist, ich weiß nicht, welchen Nummerntyp die Zeichenfolge zur Laufzeit enthalten wird.
Ich habe eine Idee, wie es geht, bin mir aber nicht sicher, ob dies mit einem Typ funktioniert, auch mit vorzeichenlosen und Gleitkommawerten:
long long scannedNumber;
NSScanner *scanner = [NSScanner scannerWithString:aString];
[scanner scanLongLong:&scannedNumber];
NSNumber *number = [NSNumber numberWithLongLong: scannedNumber];
Danke für die Hilfe.
+currentLocale
, aber Sie haben Recht . Man muss immer das Gebietsschema berücksichtigen, wenn man Dinge in eine von Menschen lesbare Form konvertiert.Sie können verwendet werden
-[NSString integerValue]
,-[NSString floatValue]
usw. Allerdings ist die korrekte (locale-sensitive, etc.) Art und Weise , dies zu tun zu verwenden ist ,-[NSNumberFormatter numberFromString:]
die Sie ein NSNumber aus dem entsprechenden Gebietsschema umgewandelt und gegeben , die Einstellungen desNSNumberFormatter
(einschließlich , ob es schwimmend erlaubt Punktwerte).quelle
@"2000"
um einint
und[@"2000" integerValue]
arbeitete gut und ist ein wenig einfacher für meinen Fall.[NSNumber numberWithInteger ...]
Ziel c
(Hinweis: Diese Methode spielt nicht gut mit unterschiedlichen Gebietsschemas, ist jedoch etwas schneller als a
NSNumberFormatter
)Schnell
Einfach aber schmutzig
Der Erweiterungsweg Das ist wirklich besser, weil es gut mit Gebietsschemas und Dezimalstellen funktioniert.
Jetzt können Sie einfach tun:
quelle
,
und.
umgekehrt verwenden (z42.000,42
. B. etwas, dasfloatValue
wahrscheinlich nicht berücksichtigt wird?@([@"42" intValue])
er perfekt funktionierte. Keine Sorge um das Gebietsschema.Bei Strings mit Zahlen beginnen, zum Beispiel
@"123"
,@"456 ft"
,@"7.89"
usw. Verwendung-[NSString integerValue]
.Also,
@([@"12.8 lbs" integerValue])
ist wie zu tun[NSNumber numberWithInteger:12]
.quelle
Sie können dies auch tun:
Habe Spaß!
quelle
Wenn Sie wissen, dass Sie Ganzzahlen erhalten, können Sie Folgendes verwenden:
quelle
Hier ist ein Arbeitsbeispiel von NSNumberFormatter, das die lokalisierte Nummer NSString (xCode 3.2.4, osX 10.6) liest, um anderen die Stunden zu ersparen, die ich gerade damit verbracht habe, herumzuspielen. Achtung: Während es nachfolgende Leerzeichen verarbeiten kann ("8.765,4" funktioniert), kann dies keine führenden Leerzeichen und keine streunenden Textzeichen verarbeiten. (Fehlerhafte Eingabezeichenfolgen: "8" und "8q" und "8 q".)
quelle
Ich wollte einen String in einen Double konvertieren. Diese obige Antwort hat bei mir nicht ganz funktioniert. Aber das tat: Wie mache ich String-Konvertierungen in Objective-C?
Alles was ich getan habe war:
quelle
Vielen Dank an alle! Ich bin kombiniertes Feedback und schaffe es endlich, von einer Texteingabe (Zeichenfolge) in eine Ganzzahl umzuwandeln. Außerdem könnte es mir sagen, ob die Eingabe eine Ganzzahl ist :)
quelle
Ich denke, NSDecimalNumber wird es tun:
Beispiel:
NSDecimalNumber ist eine Unterklasse von NSNumber, daher ist implizites Casting zulässig.
quelle
Was ist mit Cs Standard
atoi
?Denken Sie, dass es irgendwelche Einschränkungen gibt?
quelle
Sie können einfach
[string intValue]
oder[string floatValue]
oder[string doubleValue]
etc. VerwendenSie können auch
NSNumberFormatter
Klasse verwenden:quelle
Sie können auch diesen Code 8.3.3 ios 10.3 unterstützen
quelle
quelle
Arbeitete in Swift 3
quelle
Ich weiß, dass dies sehr spät ist, aber der folgende Code funktioniert für mich.
Versuchen Sie diesen Code
NSNumber *number = @([dictionary[@"keyValue"] intValue]]);
Dies kann Ihnen helfen. Vielen Dank
quelle
Versuche dies
Hinweis - Ich habe longLongValue gemäß meiner Anforderung verwendet. Sie können je nach Ihren Anforderungen auch integerValue, longValue oder ein anderes Format verwenden.
quelle
quelle