Una longitud de cadena que contiene un espacio siempre es igual a 1:
alert('My str length: ' + str.length);
El espacio es un personaje, entonces:
str = " ";
alert('My str length:' + str.length); // My str length: 3
¿Cómo puedo hacer una distinción entre una cadena vacía y una cadena que solo contiene espacios? ¿Cómo puedo detectar una cadena que solo contiene espacios?
javascript
Luca
fuente
fuente
0
? O use una expresión regular para hacer coincidir solo cadenas de espacios en blanco ...Respuestas:
Para lograr esto, puede usar una expresión regular para eliminar todos los espacios en blanco en la cadena. Si la longitud de la cadena resultante es
0
, puede estar seguro de que el original solo contenía espacios en blanco. Prueba esto:var str = " "; if (!str.replace(/\s/g, '').length) { console.log('string only contains whitespace (ie. spaces, tabs or line breaks)'); }
fuente
La solución más rápida sería usar la prueba de función de prototipo de expresiones regulares () y buscar cualquier carácter que no sea un espacio o un salto de línea
\S
:if (/\S/.test(str)) { // found something other than a space or line break }
En caso de que tenga una cuerda muy larga, puede marcar una diferencia significativa.
fuente
Similar a la respuesta de Rory, con ECMA 5 ahora puede simplemente llamar en
str.trim().length
lugar de usar una expresión regular. Si el valor resultante es 0, sabe que tiene una cadena que solo contiene espacios.if (!str.trim().length) { console.log('str is empty!'); }
Puede leer más sobre recortar aquí .
fuente
if(!str.trim()){ console.log('string is empty or only contains spaces'); }
Se puede eliminar el espacio en blanco de una cuerda usando
String#trim()
.Para verificar si una cadena es nula o indefinida, se puede verificar si la cadena en sí es falsa, en cuyo caso es nula, indefinida o una cadena vacía. Esta primera verificación es necesaria, ya que intentar invocar métodos en
null
oundefined
resultará en un error. Para verificar si contiene solo espacios, se puede verificar si la cadena es falsa después de recortar, lo que significa que es una cadena vacía en ese punto.if(!str || !str.trim()){ //str is null, undefined, or contains only spaces }
Esto se puede simplificar utilizando el operador de encadenamiento opcional .
if(!str?.trim()){ //str is null, undefined, or contains only spaces }
Si está seguro de que la variable será una cadena, solo es necesaria la segunda comprobación.
if(!str.trim()){ console.log("str is empty or contains only spaces"); }
fuente
Puede recortar el valor de su cadena creando una función de recorte para sus cadenas.
String.prototype.trim = function () { return this.replace(/^\s*/, "").replace(/\s*$/, ""); }
ahora estará disponible para cada una de sus cadenas y puede usarlo como
str.trim().length// Result will be 0
También puede utilizar este método para eliminar los espacios en blanco al principio y al final de la Cadena, es decir.
" hello ".trim(); // Result will be "hello"
fuente
Recorta el valor de tu cadena creando una función de recorte
var text = " "; if($.trim(text.length == 0){ console.log("Text is empty"); } else { console.log("Text is not empty"); }
fuente