Alguém pode me indicar algum recurso sobre comparação sem distinção entre maiúsculas e minúsculas no Objetivo C? Parece não ter um método equivalente parastr1.equalsIgnoreCase(str2)
ios
objective-c
cocoa-touch
nsstring
Tejaswi Yerukalapudi
fonte
fonte
@"Some String"
é recebido de qualquer outra chamada e passa a sernil
, a suaif
vai dartrue
como enviarcaseInsensitiveCompare
paranil
é válido e resulta em um outronil
que, no nosso caso, em comparação comNSOrderedSame
retornarátrue
(NSOrderedSame
é definido como 0). Isso pode ser uma fonte de bugs bastante devastadores, como foi no meu caso. Felicidades!NSString
que retorna um booleano. Então, se a sequência de recebimento fornil
, o método como um todo retornaráNO
.Nota:
stringA &&
é necessário porque quandostringA
énil
:e assim acontece
NSOrderedSame
também é definido como0
.O exemplo a seguir é uma armadilha típica:
fonte
Uma alternativa se você deseja ter mais controle do que apenas insensibilidade a maiúsculas e minúsculas é:
Pesquisa numérica e insensibilidade diacrítica são duas opções úteis.
fonte
if ([someString compare:otherString options:NSCaseInsensitiveSearch] && someString.length > 0 && someString != (id)[NSNull null])
Você sempre pode garantir que eles estejam no mesmo caso antes da comparação:
O principal benefício é evitar o possível problema descrito pelo matm em relação à comparação de cadeias nulas. Você pode verificar se a sequência não é nula antes de executar um dos
compare:options:
métodos ou pode ser preguiçoso (como eu) e ignorar o custo adicional de criar uma nova sequência para cada comparação (o que é mínimo se você estiver fazendo apenas uma) ou duas comparações).fonte
caseInsensitiveCompare
), sempre use isso.fonte
Uma nova maneira de fazer isso. iOS 8
fonte
true
para "Café" e "É", essa definitivamente NÃO é uma resposta correta.Experimente este método
fonte
Convertendo a resposta de Jason Coco a Swift para os profundamente preguiçosos :)
fonte
para verificar com o prefixo como no iPhone ContactApp
este blog foi útil para mim
fonte
Solução alternativa para rápida:
Para criar os dois UpperCase:
por exemplo:
ou para fazer o LowerCase:
por exemplo:
fonte
No macOS, você pode simplesmente usar
-[NSString isCaseInsensitiveLike:]
, o que retornaBOOL
exatamente como-isEqual:
.fonte
fonte