2012-04-19 15 views
47

Tengo que comprobar para ver si un var es nula o tiene cualquier espacio vacío o para el caso simplemente en blanco ("")cheque Javascript si el espacio nulo o blanco o ningún espacio

Tengo el siguiente pero no funciona :

var addr; 
addr = " "; 

if (!addr) { 
    // pull error 
} 

si yo le sigue obras

if (addr) { 

}​ 

lo que necesito es algo como esto C# método:

String.IsNullOrWhiteSpace(value) 

por lo que si es nula o tiene espacios ni ningún espacio, puedo atrapar

+2

¿Realmente quiere decir 'tiene * cualquier * espacios vacíos'? ¿O quieres decir 'son todos espacios vacíos'? – Madbreaks

+0

¿qué tal undefined? – CodeToad

Respuesta

71

una solución no jQuery que más se asemeja mucho a IsNullOrWhiteSpace, pero para detectar nula, vacía o sólo todos los espacios:

function isEmptyOrSpaces(str){ 
    return str === null || str.match(/^ *$/) !== null; 
} 

... luego:

var addr = ' '; 

if(isEmptyOrSpaces(addr)){ 
    // error 
} 

* * EDITAR Tenga en cuenta que op establece específicamente "Tengo que comprobar para ver si un var es nula o tiene cualquier espacio vacío o para el caso simplemente en blanco". Entonces, mientras que sí, "espacio en blanco" abarca más que nulos, espacios o en blanco, mi respuesta está destinada a responder la pregunta específica de la operación. Esto es importante porque op puede NO querer atrapar cosas como pestañas, por ejemplo.

+30

Los espacios en blanco también pueden incluir pestañas, otros tipos de espacios, etc. Utilice'/^ \ s * $/'para captarlos también. – grant

+0

@Grant. A propósito, NO lo hice porque me dijo _ "Necesito verificar si una var es nula o tiene espacios vacíos o simplemente está en blanco" _. – Madbreaks

+5

La semántica del método C# requiere detalles de Grant. – subsci

13

Usted puede usar if(addr && (addr = $.trim(addr)))

Esto tiene la ventaja de eliminar realmente ningún espacio en blanco exterior de addr en lugar de simplemente ignorar al realizar el control.

Referencia: http://api.jquery.com/jQuery.trim/

+2

Suponiendo, por supuesto, que el operador * quiera * eliminar el espacio en blanco. :) – Madbreaks

+0

Su respuesta arrojará un falso positivo si 'addr' se intializa con p. Ej. un entero. – Madbreaks

+0

Sin más información, supongo que la var es siempre una cadena si no es nula/indefinida. – ThiefMaster

9
if (addr == null || addr.trim() === ''){ 
    //... 
} 

Un null comparación también se pondrá al día undefined. Si quiere que pase también false, use !addr. Para compatibilidad de navegador hacia atrás, cambie addr.trim() por $.trim(addr).

+0

_ "Si quiere que también se pase falso, use! Addr" _ - se rompe si 'addr' es cero. – Madbreaks

2

Usted puede crear su propio método equivalente a

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace(value) { 

    if (value== null) return true; 

    return value.replace(/\s/g, '').length == 0; 
} 
+1

'\ s' coincide con algo más que espacios – Madbreaks

2

Al verificar el espacio en blanco, el método C# usa el estándar Unicode. El espacio en blanco incluye espacios, pestañas, retornos de carro y muchos otros códigos de caracteres que no son de impresión. Entonces usted es mejor de usar:

function isNullOrWhiteSpace(str){ 
    return str == null || str.replace(/\s/g, '').length < 1; 
} 
+0

Op afirma explícitamente que el objetivo es comprobar si hay * espacios *, no espacios en blanco. – Madbreaks

+4

Op dice "Lo que necesito es algo así como este método de C#: String.IsNullOrWhiteSpace (value)". Y si solo está buscando espacios, no nombre su función isNullOrWhiteSpace, sino llámela IsNullOrEmtpy. –

+0

El método C * * funcionaría * para verificar si una cadena era nula o una serie de espacios. Op quería algo como "eso", pero para verificar específicamente los espacios. – Madbreaks

Cuestiones relacionadas