2011-04-21 14 views
66

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

Por ahora estoy usando un comunicado if(string === "" || string === null) para cubrirlo, pero preferiría utilizar un método predefinido (sigo recibiendo algunos casos que se deslizan por por alguna razón)

Cuál es el javascript más cercano (o jQuery si entonces tiene una llamada que sería igual?

+0

posible duplicado de [¿Cuál es la mejor manera de probar una cadena vacía con jquery-out-of-the-bo x?] (http://stackoverflow.com/questions/1812245/what-is-the-best-way-to-test-for-an-empty-string-with-jquery-out-of-the-box) –

+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) –

Respuesta

155

Estás pensando demasiado. La cadena vacía y la cadena vacía son ambos valores de falsey en JavaScript.

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

Falsey-:

  • falsa
  • nula
  • indefinido
  • La cadena vacía ''
  • El número 0
  • El número NaN
+10

Increíble esto obtuvo tantos votos. Esta respuesta es incorrecta. Usted mismo dijo que un valor de falsey sería 0. Si el usuario escribe 0 en un campo, esto no es una cadena vacía. Una cadena vacía es literalmente una cadena "vacía". – KingOfHypocrites

+2

Si el usuario escribe 0, el valor será "0", no el número 0. Por lo tanto, seguirá siendo cierto, supongo. Por favor, publique su mejor solución, KingOfHypocrites? –

+2

KingOfHypocrites tiene razón en que la cadena "0" dará un resultado incorrecto: "0" == false devuelve true ! "0" == false returns true –

5

Si sabe que string no es numérico, esto va a funcionar:

if (!string) { 
    . 
    . 
    . 
+0

La cadena "0" es falsey, por lo que no tiene que comprobar si la cadena es numérica – JoJo

+0

Quise decir "0" es verdad. – JoJo

+1

Sí, la cadena "0" es verdad, pero si la variable 'cadena' no es una cadena sino el * Número * cero, entonces' cadena' será falsey. No será un problema si sabemos que 'string' es una cadena real o nulo. – awm

11

Si, por cualquier razón, que quería probar únicamente null y empty, que podría hacer :

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

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

+0

se puede optimizar para 'return (s == null || s ===" ")' – Raynos

+0

@Raynos - ¿Por qué == en lugar de === con respecto a null? ¿Y si el objeto pasado no está definido? undefined <> null, ¿verdad? –

+0

's == null' atrapa tanto' null' como 'undefined' ya que' null == undefined' – Raynos

3

que sólo puede hacer

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

Esto comprobará string de cadena indefinida, nula y vacía.

1

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

Mi preferencia es crear una función de prototipo que lo envuelva por usted.

1

Dado que la respuesta que está 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 mucha gente está mezclando cadenas y números en javascript.

Pasos: -Si el objeto es nulo, es una cadena vacía o nula. -Si el tipo no es cadena (o número) su valor de cadena es nulo o está vacío.NOTA: también podemos lanzar una excepción aquí, dependiendo de las preferencias. : si el valor de cadena recortada tiene una longitud menor que 1, es nulo o está 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; 
} 
1

se puede decir que por la lógica

Digamos que usted tiene un nombre de variable de un strval, para comprobar 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 :(
} 
1

Puede crear un método de utilidad que puede ser reutilizado 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; 
    } 
Cuestiones relacionadas