Use el envoltorio de caracteres para codificar y reemplazar una letra en una cadena con una nueva letra manteniendo el caso original

Tratando de descubrir cómo usar el ajuste de caracteres para mutar una cadena según la entrada del usuario. Si la cadena es "A Bob le encanta construir edificios" y el usuario elige reemplazar todas las letras B/b con T/t, ¿cómo debo codificarla para obtener "A Tom le encanta construir edificios"?

preguntado el 13 de septiembre de 12 a las 06:09

Cuando b se reemplaza por t, bob no se convertirá en Tom ;-) -

Use el Character envoltura. Character.toUpperCase y Character.toLowerCase le dará las dos versiones de mayúsculas y minúsculas de los caracteres de entrada del usuario. -

3 Respuestas

Creo que hay una función de reemplazo incorporada de clase String.

String text = "Bob loves to build building";
text = text.replace("B","T").replace("b","t");

algo como esto ?

Respondido el 13 de Septiembre de 12 a las 06:09

Su pregunta no está clara (¿cómo 'b' se convierte en 'm' en Bob -> Tom?). Sin embargo, para ejecutar el reemplazo que no distingue entre mayúsculas y minúsculas, debe hacer algo como esto:

String text ="Bob loves to build building";
String b = "b";

Pattern p = Pattern.compile(b, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);

String outText = m.replaceAll("T");

Respondido el 13 de Septiembre de 12 a las 07:09

Un comienzo simple es conocer String.replace(char, char) en Java

// This addresses the example you gave in your question.
str.replace('B', 'T').replace('b', 't');

Luego, debe tomar la entrada del usuario en toReplace y replaceWith caracteres, descubrir las contrapartes en mayúsculas/minúsculas usando el código ASCII y generar los argumentos para la llamada al método de reemplazo anterior.

public class Main
{
    public static void main(String[] arg) throws JSONException
    {
        String str = "Bob loves to build building";
        Scanner scanner = new Scanner(System.in);
        char toReplace = scanner.nextLine().trim().charAt(0);
        char replaceWith = scanner.nextLine().trim().charAt(0);

        System.out.println(str.replace(getUpper(toReplace), getUpper(replaceWith)).replace(getLower(toReplace),
            getLower(replaceWith)));
    }

    private static char getUpper(char ch)
    {
        return (char) ((ch >= 'A' && ch <= 'Z') ? ch : ch - ('a' - 'A'));
    }

    private static char getLower(char ch)
    {
        return (char) ((ch >= 'A' && ch <= 'Z') ? ch + ('a' - 'A') : ch);
    }
}

Respondido el 13 de Septiembre de 12 a las 07:09

Tengo que poder convertir cualquier letra que ingrese el usuario. ¿Cómo lo codifico para que cambie cualquier cosa que el usuario ingrese? Tiene que venir después de esto: System.out.print("\n¿Qué carácter le gustaría reemplazar?"); Letra de cadena = input.nextLine(); System.out.print("¿Con qué carácter le gustaría reemplazar "+letra+"?"); Intercambio de cadenas = input.nextLine(); - user1667536

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.