Como faço para testar se um NSString
está vazio no Objective-C?
ios
objective-c
nsstring
Jamey McElveen
fonte
fonte
@"\u200B"
(consistindo apenas no caractere Unicode ZERO WIDTH SPACE . A impressão imprimirá 0 caracteres (verifique usando fonte monoespaçada), mas string.length fornecerá 1. Existem outros caracteres Unicode (como OBJECT REPLACEMENT CHARACTER ) que se comportam da mesma forma. obter o último ao analisar texto PDF.ZERO WIDTH SPACE
é realmente não importa, porque, apesar disso ,@"\u200B"
é um caractere; portanto, se você testar a seqüência de caracteres vazia, ela dirá que não é porque existe um caractere. Apenas não é possível imprimir seguindo o padrão Unicode.![string length]
. Parece mais limpo.A resposta de Marc está correta. Mas aproveito a oportunidade para incluir um ponteiro para a generalização de Wil Shipley
isEmpty
, que ele compartilhou em seu blog :fonte
-isNotEmpty
:)A primeira abordagem é válida, mas não funciona se sua string tiver espaços em branco (
@" "
). Portanto, você deve limpar esses espaços em branco antes de testá-lo.Este código limpa todos os espaços em branco nos dois lados da string:
Uma boa idéia é criar uma macro, para que você não precise digitar esta linha de monstro:
Agora você pode usar:
fonte
NSString
categoria que adiciona um método chamadotrimmedString
que faz exatamente o que você escreveu.whitespaceCharacterSet
não inclui novas linhas! Aqui está uma categoria que eu escrevi incluindotrim
e alguns outros métodos úteis: github.com/alexch/unsuck/blob/master/unsuck/NSString%2BUnsuck.m github.com/alexch/unsuck/blob/master/unsuckTests/…Uma das melhores soluções que eu já vi (melhor que a de Matt G) é essa função inline aprimorada que peguei em um repo do Git Hub (o de Wil Shipley, mas não consigo encontrar o link):
fonte
condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Mais cedo ou mais tarde, você perguntará com que classe de classe está lidando, melhor fazê-lo na primeira referência.Você deve usar melhor esta categoria:
fonte
@implementation NSString (Empty) - (BOOL) empty{ return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]length] == 0); } @end
Como uma combinação da resposta de Marc e Kyle.Eu coloquei isso:
O problema é que, se o eu for nulo, essa função nunca será chamada. Retornará false, o que é desejado.
fonte
-(BOOL)isEmpty{ return ![self isNotEmpty]}
não funcionará na categoria.condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Mais cedo ou mais tarde, você perguntará com que classe de classe está lidando, melhor fazê-lo na primeira referência.Outra opção é verificar se ele é igual a
@""
comisEqualToString:
assim:fonte
Apenas passe sua string para o seguinte método:
fonte
Basta usar uma das
if
else
condições, como mostrado abaixo:Método 1:
Método 2:
fonte
Versão rápida
Embora essa seja uma pergunta do Objetivo C, eu precisava usar o
NSString
Swift, por isso também incluirei uma resposta aqui.Ou se
NSString
for um opcional:A
String
versão normal do Swift éVeja também: Verifique a sequência vazia no Swift?
fonte
Pode ser que essa resposta seja a duplicata das respostas já fornecidas, mas fiz poucas modificações e alterações na ordem de verificação das condições. Consulte o código abaixo:
fonte
Você pode verificar se sua string está vazia ou não usando este método:
A melhor prática é fazer com que uma classe compartilhada diga UtilityClass e anuncie esse método para que você possa usar esse método apenas chamando-o através de seu aplicativo.
fonte
Você tem 2 métodos para verificar se a sequência está vazia ou não:
Vamos supor que seu nome de string seja
NSString *strIsEmpty
.Método 1:
Método 2:
Escolha qualquer um dos métodos acima e saiba se a string está vazia ou não.
fonte
Basta verificar o comprimento da corda
uma mensagem para NIL retornará nulo ou 0, portanto, não é necessário testar nil :).
Feliz codificação ...
fonte
Está funcionando como charme para mim
Se o
NSString
és
fonte
Portanto, além do conceito básico de verificar se o comprimento de uma string é menor que 1, é importante considerar o contexto profundamente. Os idiomas humano ou computador ou de outra forma podem ter definições diferentes de cadeias vazias e, nesses mesmos idiomas, um contexto adicional pode alterar ainda mais o significado.
Digamos que string vazia signifique "uma string que não contenha caracteres significativos no contexto atual".
Isso pode significar visualmente, pois na cor e na cor de fundo são as mesmas em uma sequência atribuída. Efetivamente vazio.
Isso pode significar vazio de caracteres significativos. Todos os pontos, traços ou sublinhados podem ser considerados vazios. Além disso, vazio de caracteres significativos significativos pode significar uma sequência que não possui caracteres que o leitor entenda. Eles podem ser caracteres em um idioma ou conjunto de caracteres definido como sem sentido para o leitor. Poderíamos definir um pouco diferente dizer que a string não forma palavras conhecidas em um determinado idioma.
Poderíamos dizer que vazio é uma função da porcentagem de espaço negativo nos glifos renderizados.
Mesmo uma sequência de caracteres não imprimíveis sem representação visual geral não está realmente vazia. Personagens de controle vêm à mente. Especialmente a faixa ASCII baixa (fico surpreso que ninguém tenha mencionado isso porque eles usam muitos sistemas e não são espaços em branco, pois normalmente não têm glifos nem métricas visuais). No entanto, o comprimento da string não é zero.
Conclusão. O comprimento por si só não é a única medida aqui. A associação ao conjunto contextual também é bastante importante.
A associação ao conjunto de caracteres é uma medida adicional comum muito importante. Sequências significativas também são bastante comuns. (pense em SETI ou cripto ou captchas) Também existem conjuntos de contexto mais abstratos.
Portanto, pense com cuidado antes de assumir que uma string está vazia apenas com base no comprimento ou espaço em branco.
fonte
Postagem muito útil, para adicionar suporte ao NSDictionary, bem como uma pequena alteração
fonte
condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Mais cedo ou mais tarde, você perguntará com que classe de classe está lidando, melhor fazê-lo na primeira referência.fonte
stringByStrippingWhitespace
A melhor maneira é usar a categoria.
Você pode verificar a seguinte função. Que tem todas as condições para verificar.
fonte
A melhor maneira, em qualquer caso, é verificar o comprimento da string fornecida. Para isso, se a string for myString, o código será:
fonte
fonte
verifique isto:
Ou
Espero que isso ajude.
fonte
Você pode facilmente verificar se a string está vazia com isso:
fonte
Eu verifiquei uma string vazia usando o código abaixo:
fonte
É tão simples quanto
if([myString isEqual:@""])
ouif([myString isEqualToString:@""])
fonte
fonte
Você pode ter uma sequência vazia de duas maneiras:
1) @ "" // Não contém espaço
2) @ "" // Contém espaço
Tecnicamente, as duas cordas estão vazias. Podemos escrever as duas coisas apenas usando UMA condição
fonte
Tente o seguinte
fonte
fonte
str.length
lançará uma exceção sestr
for nulo.fonte