Bagaimana cara menguji jika NSString
kosong di Objective-C?
ios
objective-c
nsstring
Jamey McElveen
sumber
sumber
@"\u200B"
(hanya terdiri dari karakter Unicode ZERO WIDTH SPACE . Mencetaknya akan mencetak 0 karakter (memverifikasi menggunakan font monospace), tetapi string.length akan memberikan 1. Ada karakter Unicode lainnya (seperti KARAKTER PENGGANTI OBYEK ) yang berperilaku sama. Anda dapat dapatkan yang terakhir saatZERO WIDTH SPACE
yang tidak terlalu penting, karena@"\u200B"
merupakan karakter tetap jadi jika Anda menguji untuk string menjadi kosong, itu akan mengatakan itu bukan karena ada karakter di dalamnya. Hanya saja tidak dapat dicetak mengikuti standar Unicode.![string length]
. Tampak lebih bersih.Jawaban Marc benar. Tapi saya akan mengambil kesempatan ini untuk memasukkan pointer ke generalisasi Wil Shipley
isEmpty
, yang dibagikannya di blog - nya :sumber
-isNotEmpty
:)Pendekatan pertama valid, tetapi tidak berfungsi jika string Anda memiliki spasi kosong (
@" "
). Jadi, Anda harus menghapus spasi putih ini sebelum mengujinya.Kode ini menghapus semua ruang kosong di kedua sisi string:
Satu ide bagus adalah membuat satu makro, jadi Anda tidak perlu mengetikkan garis monster ini:
Sekarang Anda dapat menggunakan:
sumber
NSString
kategori yang menambahkan metode yang disebuttrimmedString
yang melakukan persis apa yang Anda tulis.whitespaceCharacterSet
tidak termasuk baris baru! Berikut adalah kategori yang saya tulis termasuktrim
dan beberapa metode berguna lainnya: github.com/alexch/unsuck/blob/master/unsuck/NSString%2BUnsuck.m github.com/alexch/unsuck/blob/master/unsuckTests/…Salah satu solusi terbaik yang pernah saya lihat (lebih baik daripada Matt G) adalah fungsi inline yang ditingkatkan ini saya ambil pada beberapa repo Git Hub (yang milik Wil Shipley, tetapi saya tidak dapat menemukan tautannya):
sumber
condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Cepat atau lambat, Anda akan bertanya kelas apa yang Anda hadapi, lebih baik melakukannya dengan referensi pertama.Anda sebaiknya menggunakan kategori ini:
sumber
@implementation NSString (Empty) - (BOOL) empty{ return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]length] == 0); } @end
Sebagai kombinasi jawaban Marc dan Kyle.Saya menempatkan ini:
Masalahnya adalah jika self nil, fungsi ini tidak pernah dipanggil. Ini akan mengembalikan false, yang diinginkan.
sumber
-(BOOL)isEmpty{ return ![self isNotEmpty]}
tidak akan bekerja pada kategori.condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Cepat atau lambat, Anda akan bertanya kelas apa yang Anda hadapi, lebih baik melakukannya dengan referensi pertama.Pilihan lain adalah memeriksa apakah sama
@""
denganisEqualToString:
seperti:sumber
Cukup berikan string Anda ke metode berikut:
sumber
Cukup gunakan salah satu
if
else
kondisi seperti yang ditunjukkan di bawah ini:Metode 1:
Metode 2:
sumber
Versi Swift
Meskipun ini adalah pertanyaan Objective C, saya perlu menggunakan
NSString
Swift jadi saya juga akan memasukkan jawaban di sini.Atau jika
NSString
Opsional:Versi Swift normal
String
adalahLihat juga: Periksa string kosong di Swift?
sumber
Mungkin jawaban ini adalah duplikat dari jawaban yang sudah diberikan, tetapi saya melakukan sedikit modifikasi dan perubahan dalam urutan memeriksa kondisi. Silakan merujuk kode di bawah ini:
sumber
Anda dapat memeriksa apakah string Anda kosong atau tidak saya menggunakan metode ini:
Praktik terbaik adalah membuat kelas bersama mengatakan UtilityClass dan iklankan metode ini sehingga Anda dapat menggunakan metode ini dengan hanya memanggilnya melalui aplikasi Anda.
sumber
Anda memiliki 2 metode untuk memeriksa apakah string kosong atau tidak:
Misalkan nama string Anda
NSString *strIsEmpty
.Metode 1:
Metode 2:
Pilih salah satu dari metode di atas dan ketahui apakah string kosong atau tidak.
sumber
Cukup Periksa panjang string Anda
pesan ke NIL akan mengembalikan nol atau 0, jadi tidak perlu menguji nil :).
Selamat coding ...
sumber
Ini berfungsi sebagai pesona bagi saya
Jika
NSString
inis
sumber
Jadi selain dari konsep dasar untuk memeriksa panjang string kurang dari 1, penting untuk mempertimbangkan konteks secara mendalam. Bahasa manusia atau komputer atau yang lain mungkin memiliki definisi string kosong yang berbeda dan dalam bahasa yang sama, konteks tambahan selanjutnya dapat mengubah maknanya.
Katakanlah string kosong berarti "string yang tidak mengandung karakter apa pun yang signifikan dalam konteks saat ini".
Ini bisa berarti secara visual, karena dalam warna dan warna latar belakang sama dalam string yang dikaitkan. Secara efektif kosong.
Ini bisa berarti kosong dari karakter yang bermakna. Semua titik atau semua garis putus-putus atau semua garis bawah mungkin dianggap kosong. Selanjutnya, kosong dari karakter signifikan yang berarti dapat berarti string yang tidak memiliki karakter yang dipahami pembaca. Mereka bisa berupa karakter dalam bahasa atau karakter yang ditetapkan sebagai tidak berarti bagi pembaca. Kita dapat mendefinisikannya sedikit berbeda dengan mengatakan string tidak membentuk kata-kata yang dikenal dalam bahasa tertentu.
Kita dapat mengatakan kosong adalah fungsi dari persentase ruang negatif dalam mesin terbang yang diberikan.
Bahkan urutan karakter yang tidak dapat dicetak tanpa representasi visual umum tidak benar-benar kosong. Karakter kontrol muncul di pikiran. Terutama kisaran ASCII rendah (saya terkejut tidak ada yang menyebutkan mereka karena mereka menyemprot banyak sistem dan bukan spasi karena mereka biasanya tidak memiliki mesin terbang dan tidak ada metrik visual). Namun panjang tali bukanlah nol.
Kesimpulan. Panjang saja bukan satu-satunya ukuran di sini. Keanggotaan kontekstual juga cukup penting.
Character Set keanggotaan adalah ukuran tambahan umum yang sangat penting. Urutan yang bermakna juga cukup umum. (pikirkan SETI atau crypto atau captcha) Tambahan set konteks yang lebih abstrak juga ada.
Jadi pikirkan baik-baik sebelum menganggap string hanya kosong berdasarkan panjang atau spasi.
sumber
Posting yang sangat berguna, untuk menambahkan dukungan NSDictionary juga satu perubahan kecil
sumber
condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Cepat atau lambat, Anda akan bertanya kelas apa yang Anda hadapi, lebih baik melakukannya dengan referensi pertama.sumber
stringByStrippingWhitespace
Cara terbaik adalah menggunakan kategorinya.
Anda dapat memeriksa fungsi berikut. Yang memiliki semua kondisi untuk diperiksa.
sumber
Cara terbaik dalam hal apapun adalah memeriksa panjang string yang diberikan. Untuk ini jika string Anda adalah myString maka kodenya adalah:
sumber
sumber
Periksa ini :
Atau
Semoga ini bisa membantu.
sumber
Anda dapat dengan mudah memeriksa apakah string kosong dengan ini:
sumber
Saya telah memeriksa string kosong menggunakan kode di bawah ini:
sumber
Sesederhana
if([myString isEqual:@""])
atauif([myString isEqualToString:@""])
sumber
sumber
Anda dapat memiliki string kosong dengan dua cara:
1) @ "" // Tidak mengandung ruang
2) @ "" // Mengandung Ruang
Secara teknis kedua senarnya kosong. Kita dapat menulis kedua hal itu hanya dengan menggunakan ONE Condition
sumber
Coba yang berikut ini
sumber
sumber
str.length
akan melempar pengecualian jikastr
nol.sumber