¿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 suifdarétruecomo el envíocaseInsensitiveCompareaniles válida y resultados en otronil, que, en nuestro caso, en comparación conNSOrderedSamedevolverátrue(NSOrderedSamese define como 0). Esto puede ser una fuente de errores bastante devastadores, como lo fue en mi caso. ¡Salud!NSStringque devuelve un valor booleano. Entonces, si la cadena receptora esnil, el método en su conjunto regresaNO.Nota:
stringA &&es obligatorio porque cuandostringAesnil:y así sucede
NSOrderedSametambié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
truepara "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 devuelveBOOLigual que-isEqual:.fuente
fuente