La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Java/1284421-Como-cambiar-un-string-por-otro-pero-en-determiandas-posiciones.html

Como cambiar un string por otro pero en determiandas posiciones??

Como cambiar un string por otro pero en determiandas posiciones??

Publicado por Diego (2 intervenciones) el 10/09/2011 23:23:46
Hola...
Estoy haciendo un trabajo en el que tengo que crear el típico juego de "Ahorcado", mi consulta es:


si el usuario acierta una de las letras (o varias si la letra se repite) y ya ubique en que posición de la palabra a adivinar se encuentra la letra, como puedo sustituir esa letra en la cadena en esa posicion específica???

ejemplo

String palabra = "Automovil";
String resultado = "_________";

el usuario digita la letra "o":
entonces el resultado que quiero es:

resultado = ___o_o___

sustituir la linea por la letra en la posicion que corresponde!!
ya intente con

resultado = resultado.replace("_",lo que digito el usuario);

pero por razones obvias me cambia todas las lineas!!

ayuda por favor!!!!

Como cambiar un string por otro pero en determiandas posiciones??

Publicado por bj penn (8 intervenciones) el 11/09/2011 21:14:59
public String [] comparar(String palabra, char c){
ArrayList<String> lista= new ArrayList<String>();
int tam=palabra.length()-1;
ArrayList<Integer> indice= new ArrayList<Integer>();
String [] resultado=new String[tam+1];

for(int a=0; a<=tam; a++){
if(palabra.charAt(a)==(c)){
indice.add(a);
}
}
for(int b=0; b<=indice.size()-1; b++){
resultado[indice.get(b)]=c+"";
}


return resultado;
}

ahi tendras que añadir las vidas del juego por cada error que tenga restarle 1 vida
cualquier duda comentarla...

Como cambiar un string por otro pero en determiandas posiciones??

Publicado por bj penn (8 intervenciones) el 12/09/2011 21:30:27
mejorando el code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public String [] comparar(String palabra, char c){
ArrayList<String> lista= new ArrayList<String>();
int tam=palabra.length()-1;
String [] resultado=new String[tam+1];
 
for(int a=0; a<=tam; a++){
if(palabra.charAt(a)==(c)){
resultado[a]=c+"";
 
}
}
 
return resultado;
}

Como cambiar un string por otro pero en determiandas posiciones??

Publicado por bj penn (8 intervenciones) el 12/09/2011 21:37:13
hasta ahora queda asi el code pero no ejecuta muy bien bueno espero comentarios constructivistas...

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import java.util.*;
import java.io.*;
public class ahorcado {
 
private String palabra;
private String copia;
private String acertijo;
private int vidas;
File archivo;
public ahorcado(int v){
vidas=v;
}
 
public String cambiandoPalabra(String pal){
palabra=pal;
return palabra;
}
 
 public String [] comparar(char c){
        ArrayList<String> lista= new ArrayList<String>();
        int tam=palabra.length()-1;
        ArrayList<Integer> indice= new ArrayList<Integer>();
        String [] resultado=new String[tam+1];
        copia="";
 
        if(vidas==5){
            for(int z=0; z<=tam; z++){
                copia=copia+"*";
            }
            guardar("ahorcado");
        }
        copia=recuperar("ahorcado");
        System.out.println(copia);
        if(vidas>0 || palabra!=copia){
        for(int a=0; a<=tam; a++){
            if(palabra.charAt(a)==(c)){
                resultado[a]=c+"";
            }
            else{
            resultado[a]="*";
 
            }
        }
        for(int b=0; b<=tam; b++){
         copia=copia+resultado[b];
        }
        guardar("ahorcado");
        vidas--;
    }
 
 
        return resultado;
    }
 
    public void guardar(String nombreTabla){
 
        archivo= new File ("D:\\"+nombreTabla+".txt");
       try{
 
       FileWriter escritor= new FileWriter(archivo);
       BufferedWriter auxescritor= new BufferedWriter(escritor);
       auxescritor.write(copia);
 
       auxescritor.close();
    }
    catch(Exception e){
        e.printStackTrace();
    }
 
    }
    public String recuperar(String nombreTabla){
       ArrayList<String> almacen= new ArrayList<String>();
        archivo= new File ("D:\\"+nombreTabla+".txt");
         String linea="";
         String linea0="";
       try{
 
       FileReader leedor= new FileReader(archivo);
       BufferedReader auxLeer= new BufferedReader(leedor);
       while((linea=auxLeer.readLine())!=null){
       almacen.add(linea);
    }
 
    }
    catch(Exception e){
        e.printStackTrace();
    }
    linea0=almacen.get(0);
    return linea0;
    }
}

Como cambiar un string por otro pero en determiandas posiciones??

Publicado por Diego (2 intervenciones) el 13/09/2011 05:05:07
Gracias a todos he logrado solucionarlo utilizando StringBuilder en lugar de String..
Muchas Gracias

Como cambiar un string por otro pero en determiandas posiciones??

Publicado por bj penn (8 intervenciones) el 14/09/2011 02:45:48
y como recuperar el resultado parcial...
mi solucion es guardarlo en un archivo
alguna sugerencia...

Como cambiar un string por otro pero en determiandas posiciones??

Publicado por bj penn (8 intervenciones) el 13/09/2011 17:35:37
lo que yo quiero es que rescate la palabra resultado por ejemplo entrada hola y el char c= a
resultado parcial ***a
y luego rescatar ***a del documento y hacer una y otra vez el procedimiento dicho anteriormente hasta que gane o pierda vidas=0 ayuda por fa...

Como cambiar un string por otro pero en determiandas posiciones??

Publicado por Jesús Salas (1 intervención) el 04/06/2016 20:25:21
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
26
27
public class pruebas {
    public static void main(String[] args) {
 
        String e = "ejemplo";
        String respuesta="";
        char letra='e';
        char[] aux;
        int pos;
 
        for(int i=0;i<e.length();i++){
            respuesta="_".concat(respuesta);
        }
 
        System.out.println(respuesta);
 
                aux=respuesta.toCharArray();
                pos=e.indexOf(letra);
                while(pos!=-1){
                    aux[pos]=letra;
                    pos=e.indexOf(letra,pos+1);}
                respuesta=String.valueOf(aux);
 
        System.out.println(respuesta);
 
    }
 
}