¿Cómo pruebo si un NSString
está vacío en Objective-C?
ios
objective-c
nsstring
Jamey McElveen
fuente
fuente
@"\u200B"
(que consiste solo en el carácter Unicode ESPACIO DE ANCHO CERO . Imprimirlo imprimirá 0 caracteres (verificar usando una fuente monoespaciada), pero string.length dará 1. Hay otros caracteres Unicode (como el CARACTER DE REEMPLAZO DE OBJETOS ) que se comportan de la misma manera. obtener el último cuando se analiza el texto PDF.ZERO WIDTH SPACE
es realmente no importa, porque de todos modos@"\u200B"
es un carácter, así que si prueba que la cadena esté vacía, dirá que no lo es porque hay un carácter en ella. Simplemente no se puede imprimir siguiendo el estándar Unicode.![string length]
. Parece más limpio.La respuesta de Marc es correcta. Pero aprovecharé esta oportunidad para incluir un puntero al generalizado de Wil Shipley
isEmpty
, que compartió en su blog :fuente
-isNotEmpty
:)El primer enfoque es válido, pero no funciona si su cadena tiene espacios en blanco (
@" "
). Por lo tanto, debe borrar estos espacios en blanco antes de probarlo.Este código borra todos los espacios en blanco a ambos lados de la cadena:
Una buena idea es crear una macro, para que no tenga que escribir esta línea de monstruo:
Ahora puedes usar:
fuente
NSString
categoría que agrega un método llamadotrimmedString
que hace exactamente lo que escribió.whitespaceCharacterSet
no incluye nuevas líneas! Aquí hay una categoría que escribí incluyendotrim
y algunos otros métodos útiles: github.com/alexch/unsuck/blob/master/unsuck/NSString%2BUnsuck.m github.com/alexch/unsuck/blob/master/unsuckTests/…Una de las mejores soluciones que he visto (mejor que la de Matt G) es esta función en línea mejorada que elegí en algún repositorio de Git Hub (la de Wil Shipley, pero no puedo encontrar el enlace):
fuente
condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Tarde o temprano, te preguntarás con qué clase de clase estás lidiando, mejor hacerlo en la primera referencia.Deberías usar mejor esta categoría:
fuente
@implementation NSString (Empty) - (BOOL) empty{ return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]length] == 0); } @end
como una combinación de la respuesta de Marc y Kyle.Pongo esto:
El problema es que si self es nulo, esta función nunca se llama. Volverá falso, lo que se desea.
fuente
-(BOOL)isEmpty{ return ![self isNotEmpty]}
que no funcionará en la categoría.condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Tarde o temprano, te preguntarás con qué clase de clase estás lidiando, mejor hacerlo en la primera referencia.Otra opción es comprobar si es igual a
@""
laisEqualToString:
de este modo:fuente
Simplemente pase su cadena al siguiente método:
fuente
Solo usa uno de los
if
else
condiciones como se muestra a continuación:Método 1:
Método 2:
fuente
Versión rápida
Aunque esta es una pregunta del Objetivo C, necesitaba usarla
NSString
en Swift, así que también incluiré una respuesta aquí.O si
NSString
es un opcional:La
String
versión normal de Swift esVer también: ¿ Comprobar cadena vacía en Swift?
fuente
Puede ser que esta respuesta sea el duplicado de las respuestas ya dadas, pero hice pocas modificaciones y cambios en el orden de verificación de las condiciones. Por favor, consulte el siguiente código:
fuente
Puede verificar si su cadena está vacía o no usando este método:
La mejor práctica es hacer que una clase compartida diga UtilityClass y agregue este método para que pueda usar este método simplemente llamándolo a través de su aplicación.
fuente
Tiene 2 métodos para verificar si la cadena está vacía o no:
Supongamos que su nombre de cadena es
NSString *strIsEmpty
.Método 1:
Método 2:
Elija cualquiera de los métodos anteriores y conozca si la cadena está vacía o no.
fuente
Simplemente verifique la longitud de su cuerda
un mensaje a NIL devolverá nil o 0, por lo que no es necesario probar nil :).
Feliz codificación ...
fuente
Funciona como un encanto para mi
Si el
NSString
ess
fuente
Entonces, aparte del concepto básico de verificar una longitud de cadena menor que 1, es importante considerar el contexto profundamente. Los idiomas humanos o informáticos o de otro modo pueden tener diferentes definiciones de cadenas vacías y dentro de esos mismos idiomas, el contexto adicional puede cambiar aún más el significado.
Digamos que una cadena vacía significa "una cadena que no contiene ningún carácter significativo en el contexto actual".
Esto podría significar visualmente, ya que el color y el color de fondo son los mismos en una cadena atribuida. Efectivamente vacío.
Esto podría significar vacío de caracteres significativos. Todos los puntos o todos los guiones o todos los guiones bajos pueden considerarse vacíos. Además, vacío de caracteres significativos significativos podría significar una cadena que no tiene caracteres que el lector entienda. Pueden ser caracteres en un idioma o conjunto de caracteres definido como sin sentido para el lector. Podríamos definirlo un poco diferente decir que la cadena no forma palabras conocidas en un idioma dado.
Podríamos decir que vacío es una función del porcentaje de espacio negativo en los glifos representados.
Incluso una secuencia de caracteres no imprimibles sin representación visual general no está realmente vacía. Los personajes de control vienen a la mente. Especialmente el bajo rango ASCII (me sorprende que nadie los haya mencionado ya que manejan muchos sistemas y no son espacios en blanco, ya que normalmente no tienen glifos ni métricas visuales). Sin embargo, la longitud de la cadena no es cero.
Conclusión. La longitud por sí sola no es la única medida aquí. La membresía contextual también es bastante importante.
La membresía del juego de caracteres es una medida adicional común muy importante. Las secuencias significativas también son bastante comunes. (piense en SETI o crypto o captchas) También existen conjuntos de contexto más abstractos adicionales.
Por lo tanto, piense detenidamente antes de asumir que una cadena solo está vacía según la longitud o el espacio en blanco.
fuente
Publicación muy útil, para agregar soporte NSDictionary y un pequeño cambio
fuente
condenseToSingleNSData(id thing)
?expandToNSArray(id thing)
? Tarde o temprano, te preguntarás con qué clase de clase estás lidiando, mejor hacerlo en la primera referencia.fuente
stringByStrippingWhitespace
La mejor manera es usar la categoría.
Puede verificar la siguiente función. Que tiene todas las condiciones para verificar.
fuente
La mejor manera en cualquier caso es verificar la longitud de la cadena dada. Para esto, si su cadena es myString, entonces el código es:
fuente
fuente
Mira esto :
O
Espero que esto ayude.
fuente
Puede verificar fácilmente si la cadena está vacía con esto:
fuente
He comprobado una cadena vacía usando el siguiente código:
fuente
Es tan simple como
if([myString isEqual:@""])
oif([myString isEqualToString:@""])
fuente
fuente
Puede tener una cadena vacía de dos maneras:
1) @ "" // No contiene espacio
2) @ "" // Contiene espacio
Técnicamente ambas cadenas están vacías. Podemos escribir ambas cosas simplemente usando UNA condición
fuente
Intenta lo siguiente
fuente
fuente
str.length
lanzará una excepción sistr
es nulo.fuente