Foros del Web » Programando para Internet » Javascript »

Suprimir espacios innecesarios

Estas en el tema de Suprimir espacios innecesarios en el foro de Javascript en Foros del Web. Hola. Quisiera saber como hacer para suprimir espacios en blanco innecesarios cuando un usuario, al introducir texto, escribe cosas como: "--Javier---Manzano--Pérez-------" y dejar finalmente: "Javier-Manzano-Pérez" ...
  #1 (permalink)  
Antiguo 11/04/2007, 18:01
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
Suprimir espacios innecesarios

Hola. Quisiera saber como hacer para suprimir espacios en blanco innecesarios cuando un usuario, al introducir texto, escribe cosas como:
"--Javier---Manzano--Pérez-------" y dejar finalmente:

"Javier-Manzano-Pérez"

Evidentemente los guiones (---) significan espacios en blanco.

Consigo quitar los espacios antes del texto y los posteriores, pero se me resisten los centrales (hay que dejar uno y sólo uno).

Por cierto ¿hay en JavaScript alguna función "lefTrim(), rigthTrim() o Trim(), como en otros lenguajes? Yo he quitado los espacios que decía "a lo duro".

Gracias. Un saludo.

ngr
  #2 (permalink)  
Antiguo 11/04/2007, 19:40
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Suprimir espacios innecesarios

Hola

bueno, pues yo cortaria toda la cadena y la volveria un arreglo asi

function a (f)
{
e = 0;
c = f.split(" ");
if(c[5]!=""){ e =5; }
alert(c[e]); }

</script>
<input type="text" name="texto" onclick="a(this.value)" />

prueba con esta cadena : aas-----dfsdf donde las - son espacios, esto lo que hace es cortar el valor del text en partes separandolos por el espacio, y en este ej puse que si el elemento 5 del arreglo (en este caso dfsdf) es diferente de vacio o espacio que haga e = 5 y que imprima el elemento 5 del arreglo c que es la cadena que enviaste cortada en pedazos, espero te sirva.
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
  #3 (permalink)  
Antiguo 11/04/2007, 21:31
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Suprimir espacios innecesarios

¿Qué te parece esto?
Código:
String.prototype.sinBlancos=function() {
	return this.replace(/^(\s)*/,"").replace(/(\s)*$/,"").replace(/(\s+)/g," ");
}
Uso:
Código:
function e(q,br) {
	document.body.appendChild( document.createTextNode(q) );
	if(br!==0) document.body.appendChild( document.createElement("BR") );
}

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


var cadena="  Javier    Manzano   Pérez       ";
e("'"+cadena+"'");
e("'"+cadena.sinBlancos()+"'");
Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 13/04/2007, 09:04
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Suprimir espacios innecesarios

Hola, de las buenas ideas siempre se aprende. Creo que lo conseguiré.

Buscando, buscando... he encontrado un método:

replace(substring_a_buscar,nuevoStr)

con el que haciendo: substring_a_buscar="--" y nuevoStr="-"
se pueden ir cambiando, en un bucle, parejas de "espacios" por un sólo "espacio", hasta que no haya ningún reemplazo nuevo.

Lo peor es que sólo funciona a partir de la versión 1.2 de JavaScript.

Saludos y Gacias.

ngr.
  #5 (permalink)  
Antiguo 13/04/2007, 18:43
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Suprimir espacios innecesarios

La verdad es que eso que dices, ngr777, no tiene sentido si tienes las expresiones regulares a tu alcance. ¿Qué harías si la cadena fuese un libro entero? ¿Un bucle?

Para eso tenemos:
String.replace(expresionRegular, nuevaCadena);

Para cambiar todos los ----.. que encontremos por un - único utilizaremos la expresión regular:

cadena.replace(/-+/g, "-");

y todo solucionado, sin bucles
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 15/04/2007, 14:18
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Suprimir espacios innecesarios

Hola de nuevo.


Cita:
Iniciado por derkenuke Ver Mensaje
La verdad es que eso que dices, ngr777, no tiene sentido si tienes las expresiones regulares a tu alcance. ¿Qué harías si la cadena fuese un libro entero? ¿Un bucle?

Para eso tenemos:
String.replace(expresionRegular, nuevaCadena);

Para cambiar todos los ----.. que encontremos por un - único utilizaremos la expresión regular:

cadena.replace(/-+/g, "-");

y todo solucionado, sin bucles
Supongo que llevas toda la rozón, pero ten en cuenta que soy novato en todo esto... El método que indico funciona, sí, dentro de un bucle, y efectivamente no es buena cosa si en lugar de validar una cadena de texto de un formulario que haga referencia al nombre y apellidos de una persona, metemos El Quijote entero y aperreado con espacios por doquier...

Supongo que cuando escribes cadena.replace(/-+/g, "-"); la expresión que he puesto en negrita e itálica haces referencia a "alguna funcionalidad de JavaScript" que significa algo así como:

en la cadena, sustituye cualquier grupo de caracteres iguales a "-" (sean muchos, pocos o uno solamente) por un sólo carácter "-"

Si es así, ya he aprendido algo que, ni por lo más remoto veo en mi manual, o en lo revisado por la web. Buscaré lo de "expresiones regulares"...

Por cierto, ¿no os sentís un poco abrumados por la cantidad enorme de información que nos proporcionan los buscadores? ¿cómo hacer para entresacar el trigo de la paja, aún usando las búsquedas avanzadas?.
  #7 (permalink)  
Antiguo 15/04/2007, 16:43
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Suprimir espacios innecesarios

Cita:
Iniciado por ngr777
en la cadena, sustituye cualquier grupo de caracteres iguales a "-" (sean muchos, pocos o uno solamente) por un sólo carácter "-"
Exacto, eso mismo.

La verdad es que las expresiones regulares no son exclusivamente de javascript, se pueden usar en PERL, en PHP, en algún comando de linux... incluso en el cuadro de "buscar" de algunos editores de código.

Cita:
Iniciado por ngr777
Por cierto, ¿no os sentís un poco abrumados por la cantidad enorme de información que nos proporcionan los buscadores? ¿cómo hacer para entresacar el trigo de la paja, aún usando las búsquedas avanzadas?
Sí, a veces sí. Pero otras veces encuentro poca información de lo que busco... no está equilibrado. Creo que leí que google (no sé si era esta empresa u otra) estaba intentando desarrollar un buscador mas "humano", que si buscases "actrices alemanas" te devolviese una lista de actrices del respectivo país... pero bueno queda bastante para eso.


Esta guia de mozilla me suele gustar bastante por lo completa que puede llegar a ser, pero de momento está en fase beta, y en producción. En su capítulo quinto hablan de expresiones regulares y hay una tablita bastante completa de lo que significa cada símbolo dentro de una expresión regular. Es una pena que no esté completa, pero da pie a investigar...

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #8 (permalink)  
Antiguo 16/04/2007, 17:58
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Suprimir espacios innecesarios

Hola Derkenuke, y demás gente...
Gracias por la respuesta. Ya había visitado la guía de Mozilla y la tengo incluída en FAVORITOS... El problema de los espacios (en blanco, no los siderales...) está resuelto.

Ahora mi preocupación está en validar unas fechas de nada...

Luego, a 10 elevado a 100 a buscar actrices alemanas

Bueno, en serio, muchas gracias.

Saludos.
  #9 (permalink)  
Antiguo 17/04/2007, 05:45
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Suprimir espacios innecesarios

De nada ngr777
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:45.