Problema con programa

Iniciado por ~H~, 7 Febrero 2014, 20:10 PM

0 Miembros y 1 Visitante están viendo este tema.

~H~

El método devuelve por ejemplo si metes unos strings
a = "perryABelCornitorrincoD";
b = "ABCD";

a = "perry[target]AB[endtarget]el[target]C[endtarget]ornitorrinco[target]D[endtarget]


Mete entre [target][endtarget] los que esten contenidos en el segundo String
Mi problema es cuando se repiten, el replace me los suscribe dos o más veces y entonces me sale un disparate, si alguien sabe como se soluciona o si hay otra forma más sencilla...
Gracias


Código (java) [Seleccionar]
public static String tagger(String a, String b){
       //declaración de strings
       String x1 = "";
       String a1 = "[target]";
       String a2 = "[endtarget]";
       boolean bol = true;
       int n;
       
       //Tenemos que conseguir las subristas de b que aparecen en a
       
       for(int i = 0; i < a.length(); i++){                      
           n = b.indexOf(a.charAt(i));            //posición del caracter de a contenido en b  
           if(n != -1){
           bol = true;
           }
           if(n == -1){
           bol = false;
           }
       
           if(bol){
           x1 = x1 + a.charAt(i);
           }else{
           x1 = x1 + " ";
           }
       }
       
       int w1,n3;
       String aux = "";
       x1 = " " + x1 + " ";                                   //para que siempre encuentra un espacio a la izqda y no se salga de rango
       
       for(int k = 0; k < x1.length(); k++){
           w1 = x1.charAt(k);
           
           if(w1 != ' ' && x1.charAt(k-1) == ' '){            // no es un espacio pero el anterior si es un espacio
               n3 = x1.indexOf(" ",k);                        //busca la posición del próximo espacio
               aux = x1.substring(k,n3);                      
               a = a.replaceFirst(aux,a1+aux+a2);
               
           }
       }
       return a;
   }
}