Adakah yang bisa mengarahkan saya ke sumber daya apa pun tentang perbandingan kasus sensitif di Objective C? Tampaknya tidak memiliki metode yang setarastr1.equalsIgnoreCase(str2)
ios
objective-c
cocoa-touch
nsstring
Tejaswi Yerukalapudi
sumber
sumber
@"Some String"
diterima dari panggilan lain dan kebetulannil
, Andaif
akan memberikantrue
sebagai pengirimancaseInsensitiveCompare
kenil
valid dan menghasilkan yang lainnil
, dalam kasus kami, dibandingkan denganNSOrderedSame
akan kembalitrue
(NSOrderedSame
didefinisikan sebagai 0). Ini bisa menjadi sumber bug yang sangat menghancurkan, seperti dalam kasus saya. Bersulang!NSString
yang mengembalikan boolean. Kemudian jika string penerimanil
, metode secara keseluruhan kembaliNO
.Catatan:
stringA &&
diperlukan karena ketikastringA
adalahnil
:dan yang terjadi
NSOrderedSame
juga didefinisikan sebagai0
.Contoh berikut adalah perangkap khas:
sumber
Alternatif jika Anda ingin kontrol lebih dari sekadar ketidakpekaan kasus adalah:
Pencarian numerik dan ketidakpekaan diakritik adalah dua pilihan praktis.
sumber
if ([someString compare:otherString options:NSCaseInsensitiveSearch] && someString.length > 0 && someString != (id)[NSNull null])
Anda selalu dapat memastikan bahwa mereka berada dalam kasus yang sama sebelum perbandingan:
Manfaat utama adalah Anda menghindari masalah potensial yang dijelaskan oleh matm tentang membandingkan string nil Anda bisa memeriksa string tidak nol sebelum melakukan salah satu
compare:options:
metode, atau Anda bisa malas (seperti saya) dan mengabaikan biaya tambahan untuk membuat string baru untuk setiap perbandingan (yang minimal jika Anda hanya melakukan satu atau dua perbandingan).sumber
caseInsensitiveCompare
), selalu gunakan itu.sumber
Cara baru untuk melakukan ini. iOS 8
sumber
true
untuk "Café" dan "É", ini jelas BUKAN jawaban yang benar.Coba metode ini
sumber
Mengonversi jawaban Jason Coco ke Swift untuk orang yang sangat malas :)
sumber
untuk memeriksa dengan awalan seperti pada iPhone ContactApp
ini blog berguna bagi saya
sumber
Solusi alternatif untuk cepat:
Untuk membuat kedua Huruf Besar:
misalnya:
atau untuk membuat LowerCase:
misalnya:
sumber
Pada macOS Anda cukup menggunakan
-[NSString isCaseInsensitiveLike:]
, yang mengembalikanBOOL
seperti-isEqual:
.sumber
sumber