Kann mich jemand auf Ressourcen zum Vergleich von Groß- und Kleinschreibung in Ziel C hinweisen? Es scheint keine äquivalente Methode zu habenstr1.equalsIgnoreCase(str2)
ios
objective-c
cocoa-touch
nsstring
Tejaswi Yerukalapudi
quelle
quelle
@"Some String"
von einem anderen Anruf empfangen werden und dies zufällig tunnil
, Ihrif
Willetrue
als SendencaseInsensitiveCompare
annil
gültig ist und zu einem anderen führtnil
, der in unserem Fall im Vergleich zuNSOrderedSame
Wille zurückkehrttrue
(NSOrderedSame
definiert als 0). Dies kann eine Quelle ziemlich verheerender Fehler sein, wie es in meinem Fall war. Prost!NSString
die einen Booleschen Wert zurückgibt. Wenn dann die empfangende Zeichenfolge istnil
, wird die Methode als Ganzes zurückgegebenNO
.Hinweis:
stringA &&
ist erforderlich , weil , wennstringA
istnil
:und so passiert
NSOrderedSame
ist auch definiert als0
.Das folgende Beispiel ist eine typische Falle:
quelle
Eine Alternative, wenn Sie mehr Kontrolle als nur Groß- und Kleinschreibung wünschen, ist:
Numerische Suche und diakritische Unempfindlichkeit sind zwei praktische Optionen.
quelle
if ([someString compare:otherString options:NSCaseInsensitiveSearch] && someString.length > 0 && someString != (id)[NSNull null])
Sie können vor dem Vergleich jederzeit sicherstellen, dass sie sich im selben Fall befinden:
Der Hauptvorteil besteht darin, dass Sie das von matm beschriebene potenzielle Problem beim Vergleich von Nullzeichenfolgen vermeiden. Sie können entweder überprüfen, ob die Zeichenfolge nicht Null ist, bevor Sie eine der
compare:options:
Methoden ausführen, oder Sie können faul sein (wie ich) und die zusätzlichen Kosten für die Erstellung einer neuen Zeichenfolge für jeden Vergleich ignorieren (was minimal ist, wenn Sie nur eine ausführen oder zwei Vergleiche).quelle
caseInsensitiveCompare
), verwenden Sie diesen immer.quelle
Ein neuer Weg, dies zu tun. iOS 8
quelle
true
für "Café" und "É" zurückkehrt, ist dies definitiv KEINE richtige Antwort.Versuchen Sie diese Methode
quelle
Jason Cocos Antwort auf Swift für die zutiefst Faulen konvertieren :)
quelle
mit dem Präfix wie in der iPhone ContactApp zu überprüfen
Dieser Blog war nützlich für mich
quelle
Alternative Lösung für schnell:
So machen Sie beide UpperCase:
z.B:
oder um beide LowerCase zu machen:
z.B:
quelle
Unter macOS können Sie einfach verwenden
-[NSString isCaseInsensitiveLike:]
, wasBOOL
genau wie zurückgibt-isEqual:
.quelle
quelle