2012-04-21 21 views
27

Una lunghezza della stringa che contiene uno spazio è sempre uguale a 1:Rileva stringa che contengono solo spazi

alert('My str length: ' + str.length); 

Lo spazio è un personaggio, in modo da:

str = " "; 
alert('My str length:' + str.length); // My str length: 3 

Come posso fare una distinzione tra una stringa vuota e una stringa che contiene solo spazi? Come posso rilevare una stringa che contiene solo spazi?

+0

Tagliarlo e controllare che la lunghezza sia zero. Stai usando jQuery? –

+2

Rimuovi tutto lo spazio bianco e verifica se la lunghezza della stringa è '0'? Oppure usa un'espressione regolare per abbinare solo stringhe di spazi bianchi ... –

+1

possibile duplicato di [Come verificare se il campo di testo di input contiene solo spazi bianchi?] (Http://stackoverflow.com/questions/2662245/how-to-check -whether-the-input-text-field-contiene-only-white-spaces) –

risposta

47

Per ottenere ciò è possibile utilizzare un'espressione regolare per rimuovere tutti gli spazi vuoti nella stringa. Se la lunghezza della stringa risultante è 0, puoi essere certo che l'originale conteneva solo spazi bianchi. Prova questo:

var str = " "; 
if (!str.replace(/\s/g, '').length) { 
    // string only contained whitespace (ie. spaces, tabs or line breaks) 
} 

Example fiddle

+0

Beh, la stringa conteneva solo spazi bianchi. – dwerner

4

È possibile ridimensionare la valore stringa con la creazione di una funzione di assetto per le stringhe.

String.prototype.trim = function() { 
    return this.replace(/^\s*/, "").replace(/\s*$/, ""); 
} 

ora sarà disponibile per ogni vostra stringa e si può usare come

str.trim().length// Result will be 0 

È inoltre possibile utilizzare questo metodo per rimuovere gli spazi bianchi all'inizio e alla fine della stringa cioè

" hello ".trim(); // Result will be "hello" 
+2

L'estensione dei prototipi di oggetti incorporati è una cattiva idea. – sbichenko

+0

@exizt: cosa succede se verrà utilizzato solo dal proprio codice? – Shehzad

9

la soluzione più veloce sarebbe utilizzando il prototipo di funzione regex test() e alla ricerca di qualsiasi carattere che non sia uno spazio o linea di rottura \S:

if (/\S/.test(str)) 
{ 
    // found something other than a space or line break 
} 

Se si dispone di una stringa molto lunga, può fare una differenza significativa.

Problemi correlati