Tengo cadenas con espacios en blanco adicionales, cada vez que hay más de un espacio en blanco me gustaría que fuera solo uno.
¿Nadie? Intenté buscar en google, pero nada funcionó para mí.
Gracias
Tengo cadenas con espacios en blanco adicionales, cada vez que hay más de un espacio en blanco me gustaría que fuera solo uno.
¿Nadie? Intenté buscar en google, pero nada funcionó para mí.
Gracias
Respuestas:
Algo como esto:
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
Puede aumentar String para implementar estos comportamientos como métodos, como en:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
Esto ahora le permite utilizar las siguientes formas elegantes para producir las cadenas que desee:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
El uso de una expresión regular con la función de reemplazo hace el truco:
string.replace(/\s/g, "")
var s = ' a b word word. word, wordword word ';
// with ES5:
s = s.split(' ').filter(function(n){ return n != '' }).join(' ');
console.log(s); // "a b word word. word, wordword word"
// or ES6:
s = s.split(' ').filter(n => n).join(' ');
console.log(s); // "a b word word. word, wordword word"
Divide la cadena en espacios en blanco , elimina todos los elementos de la matriz vacíos de la matriz (los que tenían más de un solo espacio) y une todas las palabras nuevamente en una cadena, con un solo espacio en blanco entre ellas.
Supongo que está buscando eliminar espacios desde el principio y / o el final de la cadena (en lugar de eliminar todos los espacios?
Si ese es el caso, necesitará una expresión regular como esta:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
Esto eliminará todos los espacios desde el principio o el final de la cadena. Si solo desea recortar espacios desde el final, la expresión regular se vería así:
mystring = mystring.replace(/\s+$/g,' ');
Espero que ayude.
''
lugar de ' '
.
jQuery.trim () funciona bien.
Sé que no debería tener nigromancia en un tema, pero dados los detalles de la pregunta, generalmente lo amplío para que signifique:
Para esto, uso un código como este (el paréntesis en la primera expresión regular está ahí solo para hacer que el código sea un poco más legible ... las expresiones regulares pueden ser un dolor a menos que esté familiarizado con ellas):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
La razón por la que esto funciona es que los métodos en String-object devuelven un objeto de cadena en el que puede invocar otro método (al igual que jQuery y algunas otras bibliotecas). Una forma mucho más compacta de codificar si desea ejecutar varios métodos en un solo objeto en sucesión.
var x = "Prueba Prueba Prueba" .split ("") .join (""); alerta (x);
Prueba esto.
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
el resultado será
string 1
Lo que sucedió aquí es que primero recortará los espacios exteriores usando y trim()
luego recortará los espacios interiores usando .replace(/\s+/g, ' ')
.
Si desea restringir al usuario para que dé espacio en blanco en el nombre, simplemente cree una instrucción if y proporcione la condición. como yo lo hice:
$j('#fragment_key').bind({
keypress: function(e){
var key = e.keyCode;
var character = String.fromCharCode(key);
if(character.match( /[' ']/)) {
alert("Blank space is not allowed in the Name");
return false;
}
}
});
¿Que tal este?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
salidas "my test string with crazy stuff is cool "
Este también elimina las pestañas
\s
. Regex innecesariamente complejo, bien podría escribir /\s+/g
.