2012-04-19 19 views
47

ho bisogno di controllare per vedere se un var è nulla o ha tutti gli spazi vuoti o per quella materia solo vuota ("")controllo JavaScript se spazio nullo o bianco o nessuno spazio

Ho il seguente, ma non funziona :

var addr; 
addr = " "; 

if (!addr) { 
    // pull error 
} 

se io seguente funziona

if (addr) { 

}​ 

cosa ho bisogno è qualcosa di simile C# metodo:

String.IsNullOrWhiteSpace(value) 

modo che, se è nullo o ha spazi o nessuno spazio, posso intrappolare

+2

Vuoi davvero dire 'ha * qualsiasi * spaces' vuoto? O intendi "tutti gli spazi vuoti"? – Madbreaks

+0

e non definito? – CodeToad

risposta

71

una soluzione non-jQuery che più da vicino imita IsNullOrWhiteSpace, ma per rilevare nulla, vuoto o solo tutti-gli spazi:

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

... quindi:

var addr = ' '; 

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

* EDIT * prega di notare che op afferma specificamente "ho bisogno di controllare per vedere se un var è nulla o ha tutti gli spazi vuoti o per quella materia solo vuoto". Quindi, mentre sì, lo "spazio bianco" comprende più di null, spazi o spazi vuoti, la mia risposta è intesa a rispondere alla domanda specifica dell'op. Questo è importante perché op potrebbe NON voler catturare cose come le schede, per esempio.

+30

Gli spazi bianchi possono anche includere tabulazioni, altri tipi di spazi, ecc. Usa'/^ \ s * $/'per catturare anche quelli. – grant

+0

@Grant NON ho voluto farlo di proposito perché op ha detto _ "Devo controllare se var è nullo o ha spazi vuoti o è solo vuoto" _. – Madbreaks

+5

La semantica del metodo C# richiede le specifiche di Grant. – subsci

13

è possibile utilizzare if(addr && (addr = $.trim(addr)))

Questo ha il vantaggio di effettivamente rimuovere eventuali spazi vuoti esterno dal addr invece di ignorare quando si esegue il controllo.

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

+2

Supponendo, ovviamente, l'op * vuole * rimuovere gli spazi bianchi. :) – Madbreaks

+0

La risposta restituirà un falso positivo se "addr" è inizializzato con ad es. un numero intero – Madbreaks

+0

Senza ulteriori informazioni, suppongo che var sia sempre una stringa se non è nullo/indefinito. – ThiefMaster

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

Un confronto null sarà anche prendere undefined. Se si desidera passare anche false, utilizzare !addr. Per la compatibilità con i browser a ritroso sostituisci addr.trim() per $.trim(addr).

+0

_ "Se vuoi passare anche il valore false, usa! Addr" _ - si interrompe se "addr' è zero. – Madbreaks

2

È possibile creare il proprio metodo Equivalente a

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace(value) { 

    if (value== null) return true; 

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

'\ s' corrisponde a più di semplici spazi – Madbreaks

2

Durante il controllo dello spazio bianco, il metodo C# utilizza lo standard Unicode. Lo spazio bianco include spazi, tabulazioni, ritorni a capo e molti altri codici carattere non stampabili. Così si sono meglio di utilizzare:

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

Op afferma esplicitamente che l'obiettivo è controllare * spazi *, non spazi bianchi. – Madbreaks

+4

Op dice "Quello di cui ho bisogno è qualcosa come questo metodo C#: String.IsNullOrWhiteSpace (value)". E se stai solo controllando gli spazi, non nominare la tua funzione è NullOrWhiteSpace ma invece nominarla IsNullOrEmtpy. –

+0

Il metodo C# * funzionerebbe * per verificare se una stringa era nullo o una serie di spazi. Op voleva qualcosa del genere, ma per controllare specificamente gli spazi. – Madbreaks

Problemi correlati