[ Foro de Java ]
¿Alguien me podría ayudar con este ejercicio? No estoy segura ni de como comenzarlo.
"Añada a la clase StringUtils un método public y static llamado tagger que devuelva un resultado de tipo String. El método tendrá 2 parámetros que serán objetos de la clase String.
Ambas ristras estarán formadas solamente por letras mayúsculas y minúsculas, números y espacios.
La ristra representada por el segundo parámetro no estará vacía ni tendrá caracteres repetidos.
El método devolverá una nueva ristra, que será una copia de la pasada como primer parámetro en la que a todas las subristras de la ristra pasada como primer parámetro, que estén formadas sólo por caracteres contenidos en la subristra representada por el segundo parámetro y que no estén contenidas en una subristra mayor de las mismas características, se les habrá añadido por delante la ristra ?[target]? y por detrás la ristra ?[endtarget]?.
Ejemplo:
parámetro 1: ?alsikjuyZB8we4 aBBe8XAZ piarBq8 Bq84Z ?
parámetro 2: ?XYZAB?
subristras formadas sólo por caracteres contenidos en el segundo parámetro:
?ZB?, ?BB?, ?XAZ?, "B", "B", ?Z?
El resultado es:
?alsikjuy[target]ZB[endtarget]8we4 a[target]BB[endtarget]e8[target]XAZ[endtarget] piar[target]B[endtarget]q8 [target]B[endtarget]q84[target]Z[endtarget] ?"
Lo que tengo es algo así, pero ya digo que no tengo ni idea:
public class StringUtils {
public static String tagger (String s1, String s2){
String result = "";
for (int i=0; i<s1.length();i++){
for (int j=0; j<s2.length();j++){
if (s1.charAt(i)== s2.charAt(j)){
result = result + "[target]";
while (s1.charAt(i)== s2.charAt(j)) {
result = result + s2.charAt(j);
if ( j == s2.length()) break;
}
result = result + "[endtarget]";
}
}
}
return result;
}
}
En tu enunciado se ven caracteres raros, imagino que comillas tipográficas en vez de comillas rectas que te haya generado Word o algún otro procesador de texto.
Aquí tienes la referencia oficial de "string":
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
Verás que hay muchas operaciones que puedes aplicar a una cadena. Por ejemplo, puedes partir la cadena 2 para obtener un array de palabras, usando "split".
Luego podrías recorrer cada uno de esos elementos del array (las palabras a buscar) para ver si aparecen en la cadena 1. Entonces, podrías reemplazar cada una de ellas por [target] + palabra + [endtarget], usando "replace".
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)