Bagaimana saya bisa mengkonversi NSString
berisi sejumlah tipe data primitif (misalnya int
, float
, char
, unsigned int
, dll)? Masalahnya adalah, saya tidak tahu tipe nomor mana yang akan berisi string saat runtime.
Saya punya ide bagaimana melakukannya, tetapi saya tidak yakin apakah ini bekerja dengan semua tipe, juga nilai unsigned dan floating point:
long long scannedNumber;
NSScanner *scanner = [NSScanner scannerWithString:aString];
[scanner scanLongLong:&scannedNumber];
NSNumber *number = [NSNumber numberWithLongLong: scannedNumber];
Terima kasih untuk bantuannya.
+currentLocale
, tetapi Anda benar; kita harus selalu mempertimbangkan lokal ketika berhadapan dengan mengkonversi barang ke-dan-dari bentuk yang bisa dibaca manusia.Anda dapat menggunakan
-[NSString integerValue]
,,-[NSString floatValue]
dll. Namun, cara yang benar (sensitif-lokal, dll.) Untuk melakukan ini adalah dengan menggunakan-[NSNumberFormatter numberFromString:]
yang akan memberi Anda NSNumber yang dikonversi dari lokal yang sesuai dan diberikan pengaturanNSNumberFormatter
(termasuk apakah itu akan memungkinkan mengambang nilai titik).sumber
@"2000"
keint
dan[@"2000" integerValue]
bekerja dengan baik dan sedikit lebih sederhana untuk kasus saya.[NSNumber numberWithInteger ...]
Objektif-C
(Catatan: metode ini tidak cocok dengan perbedaan lokal, tetapi sedikit lebih cepat dari a
NSNumberFormatter
)Cepat
Cara sederhana tapi kotor
Cara ekstensi Ini lebih baik, sungguh, karena itu akan bermain baik dengan lokal dan desimal.
Sekarang Anda bisa melakukannya:
sumber
,
dan.
sebaliknya (mis42.000,42
. SesuatufloatValue
mungkin tidak masuk akal?@([@"42" intValue])
berfungsi dengan baik. Tidak khawatir tentang Lokal.Untuk string dimulai dengan bilangan bulat, misalnya,
@"123"
,@"456 ft"
,@"7.89"
, dll, penggunaan-[NSString integerValue]
.Jadi,
@([@"12.8 lbs" integerValue])
seperti melakukan[NSNumber numberWithInteger:12]
.sumber
Anda juga dapat melakukan ini:
Selamat bersenang-senang!
sumber
Jika Anda tahu bahwa Anda menerima bilangan bulat, Anda dapat menggunakan:
sumber
Berikut adalah contoh NSNumberFormatter yang dapat membaca nomor lokal NSString (xCode 3.2.4, osX 10.6), untuk menghemat waktu yang saya habiskan untuk bermain-main dengan orang lain. Hati-hati: meskipun dapat menangani trailing blank ("8,765,4" berfungsi), ini tidak dapat menangani spasi putih terdepan dan ini tidak dapat menangani karakter teks liar. (String input buruk: "8" dan "8q" dan "8 q".)
sumber
Saya ingin mengubah string menjadi dobel. Jawaban di atas tidak berhasil bagi saya. Tapi ini berhasil: Bagaimana melakukan konversi string di Objective-C?
Yang saya cukup banyak lakukan adalah:
sumber
Terima kasih semuanya! Saya umpan balik gabungan dan akhirnya berhasil mengkonversi dari input teks (string) ke Integer. Plus itu bisa memberi tahu saya apakah input bilangan bulat :)
sumber
Saya pikir NSDecimalNumber akan melakukannya:
Contoh:
NSDecimalNumber adalah subkelas dari NSNumber, jadi pengecoran implisit diperbolehkan.
sumber
Bagaimana dengan standar C
atoi
?Apakah Anda pikir ada peringatan?
sumber
Anda bisa menggunakan
[string intValue]
atau[string floatValue]
atau[string doubleValue]
lainnyaAnda juga dapat menggunakan
NSNumberFormatter
kelas:sumber
Anda juga dapat melakukan hal ini seperti dukungan kode 8.3.3 ios 10.3
sumber
sumber
Bekerja di Swift 3
sumber
Saya tahu ini sangat terlambat tetapi kode di bawah ini berfungsi untuk saya.
Coba kode ini
NSNumber *number = @([dictionary[@"keyValue"] intValue]]);
Ini dapat membantu Anda. Terima kasih
sumber
Coba ini
Catatan - Saya telah menggunakan longLongValue sesuai kebutuhan saya. Anda juga dapat menggunakan integerValue, longValue, atau format lainnya tergantung pada kebutuhan Anda.
sumber
sumber