Equivalente de C # String.IsNullOrEmpty Javascript

86

Quiero intentar hacer una llamada de cadena equivalente a C # String.IsNullOrEmpty(string)en javascript. Busqué en línea asumiendo que había una simple llamada que hacer, pero no pude encontrar una.

Por ahora, estoy usando una if(string === "" || string === null)declaración para cubrirlo, pero prefiero usar un método predefinido (sigo recibiendo algunas instancias que se escapan por alguna razón)

¿Cuál es la llamada de javascript (o jquery más cercana si luego tiene una) que sería igual?

Copa Stanley Phil
fuente
3
@ DanielA.White, el argumento es el mismo pero, para un desarrollador de C # como yo, es más probable que se encuentre esta pregunta (con su título)
Daniele Armanasco

Respuestas:

211

Estás pensando demasiado. Las cadenas nulas y vacías son valores falsos en JavaScript.

if(!theString) {
 alert("the string is null or empty");
}

Falsey:

  • falso
  • nulo
  • indefinido
  • La cuerda vacía ''
  • El numero 0
  • El número NaN
JoJo
fuente
16
Increíble, esto consiguió tantos votos positivos. Esta respuesta es incorrecta. Usted mismo dijo que un valor falso sería 0. Si el usuario escribe 0 en un campo, esta no es una cadena vacía. Una cadena vacía es literalmente una cadena "vacía".
KingOfHypocrites
3
Si el usuario escribe 0, el valor será la cadena "0", no el número 0. Así que supongo que seguirá siendo cierto. Publique su mejor solución, KingOfHypocrites?
Jonas T
2
KingOfHypocrites tiene razón en que la cadena "0" dará un resultado incorrecto: "0" == falso devuelve verdadero! "0" == falso devuelve verdadero
Martien de Jong
2
Útil. Sin embargo, conozca su conjunto de datos. Si "0" o "falso" son entradas posibles, es posible que esta solución no siempre funcione.
Nevyn
12

Si, por el motivo que sea, solo desea probar nully empty, puede hacer:

function isNullOrEmpty( s ) 
{
    return ( s == null || s === "" );
}

Nota: Esto también se verá indefinido como @Raynos mencionado en los comentarios.

Código Maverick
fuente
se puede optimizar parareturn (s == null || s === "")
Raynos
@Raynos - ¿Por qué == en lugar de === con respecto a null? ¿Y si el objeto pasado no está definido? indefinido <> nulo, ¿verdad?
Code Maverick
s == nullatrapa ambos nully undefineddesdenull == undefined
Raynos
@Raynos - Ok, lo entiendo, pero en el caso de que realmente quieras saber undefined o null, deberías usar ===, ¿correcto?
Code Maverick
5

Si sabe que stringno es numérico, esto funcionará:

if (!string) {
  .
  .
  .
awm
fuente
La cadena "0" es falsa, por lo que no tiene que comprobar si la cadena es numérica.
JoJo
1
Sí, la cadena "0" es verdadera, pero si la variable stringde hecho no es una cadena sino el Número cero, entonces stringserá falsa. No será un problema si sabemos que stringes una cadena real o nula.
awm
3

solo puedes hacer

if(!string)
{
  //...
}

Esto buscará stringcadenas vacías, nulas o indefinidas.

Vidrio roto
fuente
1

Para ser claros, if(!theString){//...}donde theString es una variable no declarada arrojará un error indefinido, no lo encontrará verdadero. Por otro lado, si tiene: if(!window.theString){//...}ovar theString; if(!theString){//...} funcionará como se esperaba. En el caso de que una variable no se declare (en lugar de ser una propiedad o simplemente no se establezca), debe usar:if(typeof theString === 'undefined'){//...}

Mi preferencia es crear una función de prototipo que lo resuelva para usted.

Craig
fuente
1

Dado que la respuesta marcada como correcta contiene un pequeño error, este es mi mejor intento para encontrar una solución. Tengo dos opciones, una que toma una cadena, la otra toma una cadena o un número, ya que supongo que muchas personas están mezclando cadenas y números en javascript.

Pasos: -Si el objeto es nulo, es una cadena nula o vacía. -Si el tipo no es cadena (o número), su valor de cadena es nulo o vacío. NOTA: también podríamos lanzar una excepción aquí, dependiendo de las preferencias. -Si el valor de la cadena recortada tiene una longitud menor a 1, es nulo o vacío.

var stringIsNullOrEmpty = function(theString)
{
    return theString == null || typeof theString != "string" || theString.trim().length < 1;
}

var stringableIsNullOrEmpty = function(theString)
{
    if(theString == null) return true;
    var type = typeof theString;
    if(type != "string" && type != "number") return true;
    return theString.toString().trim().length < 1;
}
Martien de Jong
fuente
1

puedes decirlo por lógica

Digamos que tiene un nombre de variable a strVal, para verificar si es nulo o vacío

if (typeof (strVal) == 'string' && strVal.length > 0) 
{
// is has a value and it is not null  :)
}
else
{
//it is null or empty :(
}
Ahmad Hindash
fuente
1

Puede crear un método de utilidad que se puede reutilizar en muchos lugares, como:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
Anjum ....
fuente