Foros del Web » Programación para mayores de 30 ;) » Java »

Funcion replace() sobre un String no hace nada

Estas en el tema de Funcion replace() sobre un String no hace nada en el foro de Java en Foros del Web. Hola! Aplico la función replace() a un String. Concretamente quiero sustituir el caracter "," por el caracter ".". Es decir hago algo así como cadena.replaceAll( ...
  #1 (permalink)  
Antiguo 29/09/2009, 16:01
Avatar de Sandunguero  
Fecha de Ingreso: junio-2006
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
Funcion replace() sobre un String no hace nada

Hola!

Aplico la función replace() a un String. Concretamente quiero sustituir el caracter "," por el caracter ".". Es decir hago algo así como cadena.replaceAll( ",", ".").

Código PHP:
ultimoPrecio=dato.getPrecio();
System.out.println ("String antes de replace: " ultimoPrecio); //Muestra 14,5
ultimoPrecio.replaceAll(","".");
System.out.println("String despues de replace: " ultimoPrecio); //Muestra 14,5 
Observando lo mostrado por pantalla, veo que sale exactamente lo mismo antes y después de ejecutar la funcion replace. No se reemplaza la coma por el punto.

He probado tanto con la función replace() como con replaceAll(), pero ninguna hace ningún cambio.

¿Alguna orientación de por qué no hace nada la función replace()?

Gracias!
  #2 (permalink)  
Antiguo 30/09/2009, 06:16
Avatar de Sandunguero  
Fecha de Ingreso: junio-2006
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Funcion replace() sobre un String no hace nada

El misterio aumenta ante mi desconcierto!


Viendo que ni replace() ni replaceAll() me funcionan, decido usar una función propia para reemplazar la dichosa coma ",", por un punto "."

Dicha función es esta:

Código PHP:
    public static String replaceCharInString(char toReplacechar replaceWithString inString)
    {
        
String cleanedString "";
        for(
int i =0inString.length(); i++)
        {
            
            if(
inString.charAt(i) == toReplace)
            {
                
cleanedString += replaceWith;
            }
            else
            {
                
cleanedString += inString.charAt(i);
            }
            
        }
        
        return 
cleanedString;
    } 
Muy sencilla, primer argumento es el carácter antiguo, segundo argumento es el carácter nuevo que queremos introducir y el tercer argumento la cadena sobre la que hacer estas sustituciones.


Código PHP:
replaceCharInString',',  '.'ultimoPrecio); 
Pues TAMPOCO hace ninguna modificación. La coma sigue apareciendo en vez del punto.

Algo muy simple se me debe estar pasando por alto, porque no entiendo nada...


¿Por qué no consigo reemplazar la coma por el punto?
  #3 (permalink)  
Antiguo 30/09/2009, 06:48
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Funcion replace() sobre un String no hace nada

Aquí tienes ;)

String ultimoPrecio="14,5";
System.out.println ("String antes de replace: " + ultimoPrecio); //Muestra 14,5
ultimoPrecio = ultimoPrecio.replaceAll(",", ".");
System.out.println("String despues de replace: " + ultimoPrecio); //Muestra 14.5
  #4 (permalink)  
Antiguo 30/09/2009, 06:50
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Funcion replace() sobre un String no hace nada

Obviamente el dato.getPrecio() lo quité porque no tenía eso cuando lo probé, así que le metí el string directamente.

El problema es que cuando ejecutabas el replaceAll no asignabas el resultado a ninguna variable, por eso ultimoPrecio seguía siendo lo mismo.
  #5 (permalink)  
Antiguo 30/09/2009, 07:29
Avatar de Sandunguero  
Fecha de Ingreso: junio-2006
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Funcion replace() sobre un String no hace nada

¡Fuzzylog muchííísimas gracias! Ya funciona, uf qué alivio :)

No había caído en la necesidad de hacer esa asignación. Estaba convencido de que ejecutando el metodo replace() sobre el objeto ya quedaría automáticamente asignado.

Una cosa más que aprendo :)

Una vez más, gracias!
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 00:20.