Foros del Web » Programando para Internet » Javascript »

convertir cadena

Estas en el tema de convertir cadena en el foro de Javascript en Foros del Web. buenas noches, tengo un campo así: moimporte = 12345678901234; de 14 posiciones donde las dos ultimas representan la parte decimal de un número, el resto ...
  #1 (permalink)  
Antiguo 25/06/2007, 17:04
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
convertir cadena

buenas noches,

tengo un campo así:
moimporte = 12345678901234; de 14 posiciones donde las dos ultimas representan la parte decimal de un número, el resto puede ser un valor positivo o cero.

(00000045000000)

y tengo que convertir en el siguiente:
vaimporte = 12345678.90; de 10 posiciones donde las dos ultimas representan la parte decimal.

(-450000.00) (los - son espacios en blanco)

se me presenta el problema de convertir los posibles ceros a la izquierda en espacios en blanco, como puedo solucionarlo ?

gracias.
  #2 (permalink)  
Antiguo 25/06/2007, 18:11
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: convertir cadena

Lo primero que debes hacer es transformar moimporte a cadena con .toString(). Si son las primeras 8 posiciones siempre las que son la parte entera, y las siguientes 2 posiciones las que son parte decimal, puedes fácilmente extraer esas dos partes con el método substring(inicio, fin). De esta manera la parte entera y la parte decimal serían:
moimporte.toString().substring(0,8)
moimporte.toString().substring(8,10);

Creo que he puesto los índices correctamente, habría que probarlo.


Y si quieres que la cadena 00000045000000 se quede en ------450000.00 lo único que debes hacer es sustituir los ceros de la izquierda de la parte entera por espacios en blanco (" "). Ésto lo he logrado con una sola línea de la manera siguiente:
Código PHP:
var cadena "00000045000000";
for(
dev=""; /^0/.test(cadena); cadena cadena.substring(1,cadena.length), dev+=" " );
cadena dev+cadena;
alert("'" cadena "'"); 
Hago un bucle for que termina cuando en cadena no se encuentran mas ceros al principio, y en cada iteración voy quitándole a cadena el primer caracter, y voy añadiendo a dev un espacio vacío (equivalente al cero que he quitado). Luego sólo queda concatenar dev con cadena. He probado varias maneras, esa es la que más me ha convencido. Sin embargo no he conseguido hacerlo únicamente con expresiones regulares.



Espero que sea lo que buscas.

Un saludo evoarte.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 26/06/2007, 04:11
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Re: convertir cadena

buenos días,

en algunos casos, el ultimo cero por la izquierda (en la posición anterior al primer numero ) lo tengo q sustituir por un guión, como incorporo esto al código,

gracias.
salu2.
  #4 (permalink)  
Antiguo 26/06/2007, 11:33
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: convertir cadena

Cita:
Iniciado por evoarte
en algunos casos
En qué casos? Si no lo mencionas es dificil transformarlo en un IF.

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.
  #5 (permalink)  
Antiguo 26/06/2007, 16:40
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Re: convertir cadena

si, tienes razón, lo he solucionado combinando las 2 repuestas a mis 2 ultimas cuestiones planteadas, para no poner el código explico con lo he solucionado,

primero convierto la cadena de texto en un array con split, como la cadena inicial tiene 0 a la izquierda en el campo importe y es de mas longitud que el importe de la cadena que debo obtener para importar en otra aplicación:

primero: cadenafinal = cadenainicial.substr(x,7)
segundo: recorro en un for el array devolviendo espacios hasta el primer valor positivo.
tercero: cuando el apunte contable va al haber, coloco un signo - delante del importe, es la forma en que debo de indicar los apuntes contables al haber para que la aplicación que recibe los datos lo entienda.
cuarto: las dos ultimas posiciones las separo como parte decimal.
quinto: le añado un "." como separador de parte entera y decimal

gracias, me ha sido de gran ayuda, espero que sigas por aquí mucho tiempo.
salu2.

Última edición por evoarte; 26/06/2007 a las 16:47
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 10:57.