¿Alguien puede señalarme algún recurso sobre la comparación entre mayúsculas y minúsculas en el Objetivo C? No parece tener un método equivalente parastr1.equalsIgnoreCase(str2)
ios
objective-c
cocoa-touch
nsstring
Tejaswi Yerukalapudi
fuente
fuente
@"Some String"
se recibe de cualquier otra llamada y pasa a sernil
, a suif
darétrue
como el envíocaseInsensitiveCompare
anil
es válida y resultados en otronil
, que, en nuestro caso, en comparación conNSOrderedSame
devolverátrue
(NSOrderedSame
se define como 0). Esto puede ser una fuente de errores bastante devastadores, como lo fue en mi caso. ¡Salud!NSString
que devuelve un valor booleano. Entonces, si la cadena receptora esnil
, el método en su conjunto regresaNO
.Nota:
stringA &&
es obligatorio porque cuandostringA
esnil
:y así sucede
NSOrderedSame
también se define como0
.El siguiente ejemplo es un escollo típico:
fuente
Una alternativa si desea más control que solo la insensibilidad a mayúsculas y minúsculas es:
La búsqueda numérica y la insensibilidad diacrítica son dos opciones útiles.
fuente
if ([someString compare:otherString options:NSCaseInsensitiveSearch] && someString.length > 0 && someString != (id)[NSNull null])
Siempre puede asegurarse de que estén en el mismo caso antes de la comparación:
El principal beneficio es que evita el problema potencial descrito por matm con respecto a la comparación de cadenas nulas. Puede verificar si la cadena no es nula antes de hacer uno de los
compare:options:
métodos, o podría ser vago (como yo) e ignorar el costo adicional de crear una nueva cadena para cada comparación (que es mínimo si solo está haciendo uno) o dos comparaciones).fuente
caseInsensitiveCompare
), use siempre eso.fuente
Una nueva forma de hacer esto. iOS 8
fuente
true
para "Café" y "É", esta definitivamente NO es una respuesta correcta.Prueba este método
fuente
Convirtiendo la respuesta de Jason Coco a Swift para los profundamente perezosos :)
fuente
para verificar con el prefijo como en la aplicación de contacto de iPhone
este blog me fue útil
fuente
Solución alternativa para swift:
Para hacer ambos UpperCase:
p.ej:
o para hacer ambos LowerCase:
p.ej:
fuente
En macOS, simplemente puede usar
-[NSString isCaseInsensitiveLike:]
, que devuelveBOOL
igual que-isEqual:
.fuente
fuente