Java - Remplazar un Carácter de una posición "X" de un String

 
Vista:
Imágen de perfil de Alejandro
Val: 13
Ha aumentado su posición en 7 puestos en Java (en relación al último mes)
Gráfica de Java

Remplazar un Carácter de una posición "X" de un String

Publicado por Alejandro (5 intervenciones) el 20/10/2018 19:59:11

Necesito remplazar la posición 0 y 1 de una variable String por dos ceros, pero me salta error el código texto.SetCharAt(0,"0");





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static void main(String[] args) {
 
		Scanner scan = new Scanner(System.in);
 
		String texto;
 
		System.out.println("Ingrese un el 1r Texto");
		texto = scan.nextLine();
 
		if (texto.length() > 10) {
 
			System.out.println("Su palabra tiene más de 10 Carácteres");
 
			texto.SetCharAt(0,"0");
                        texto.SetCharAt(1,"0");
 
                        System.out.println("Su NUEVA palabra es: "+texto);
 
			}
 
		else {
			System.out.println("Su palabra tiene: "+texto.length()+" Carácteres");
		}
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Remplazar un Carácter de una posición "X" de un String

Publicado por Kabuto (1381 intervenciones) el 21/10/2018 00:01:01
Hola.
Los objetos String son inmutables, es decir, no se pueden modificar.

Sin embargo hay métodos de la clase String que "simulan" una modificación. Digo simulan porque en realidad no modifican el String original, sino que crean un String nuevo con las modificaciones solicitadas.

Pero ninguno de estos te van a servir para lo que necesitas.

Supongamos que tenemos esta cadena:
1
String cadena = "hola caracola";

Tenemos el metodo replaceFirst(), que indicandole una letra o cadena de letras que contenga la cadena original, la cambiará por el segundo argumento que le especifiquemos.
Sin embargo solo cambiará la primera ocurrencia.
Si hacemos:
1
cadena = cadena.replaceFirst("o", "m");

Cambiará la primera "o" por una "m", pero solo la primera que encuentre, no cambiará el resto.

También está el metodo replace(). Este cambiará el char (no cadena de String) que el indiquemos, y los cambiará todos.
1
cadena = cadena.replace('o', 'm');


Tu necesitas cambiar unas posiciones concretas. Y en tu código has puesto un método, el .setCharAt(), que NO pertenece a la clase String, sino a la clase StringBuilder, que es la que si te puede ayudar a conseguir lo que deseas.

StringBuilder, como su nombre indica, es un constructor de Strings. Si es "mutable", es decir, se puede modificar fácilmente y una vez hechas las modificaciones necesarias, te proporcionará un String nuevo.
Así que para conseguir lo que tu quieres hacer, has de crear un StringBuilder a partir de tu String original, haces las modificaciones y por último le pides que devuelva el String modificado

1
2
3
4
StringBuilder cadenaModi = new StringBuilder(texto);//Creamos un builder a partir del String original
cadenaModi.setCharAt(0, '0');//Realizamos cambios
cadenaModi.setCharAt(1, '0');
texto = cadenaModi.toString();//Recuperamos nuevo String con los cambios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alejandro
Val: 13
Ha aumentado su posición en 7 puestos en Java (en relación al último mes)
Gráfica de Java

Remplazar un Carácter de una posición "X" de un String

Publicado por Alejandro (5 intervenciones) el 21/10/2018 15:11:45
Gracias por tomarte el tiempo de explicarme de una manera más detallada amigo Kabuto, me ha servido.
Un saludo :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar