2011-10-29 17 views
5

Actualmente estoy en una clase de Java de nivel introductorio y estoy trabajando en la asignación de frase clásica. El objetivo es que un usuario ingrese una frase secreta y otra que adivine una letra a la vez. Entre las suposiciones, la frase se debe mostrar como todos los signos de interrogación, excepto las letras que se adivinaron correctamente. Nuestra clase solo ha cubierto algunos métodos muy básicos, sentencias if-else y bucles hasta este punto, pero estoy tratando de investigar algunos métodos de cadenas que pueden hacer esto un poco más fácil.Cómo reemplazar todos los caracteres en una cadena de entrada de usuario, excepto uno

sé de los métodos replace(), replaceAll() y , pero se preguntaba si hay un método que le permite reemplazar todos menos uno de los personajes de su elección en una cadena.

Gracias de antemano

Respuesta

13

La forma más sencilla es probablemente usar String.replaceAll():

String out = str.replaceAll("[^a]", "?"); 

Esto dejará todas las letras a intacta y reemplazarán todos los demás caracteres con signos de interrogación.

Esto se puede extender fácilmente a múltiples personajes, así:

String out = str.replaceAll("[^aeo]", "?"); 

Esto mantendrá todas las letras a, e y o y reemplazará todo lo demás.

+0

Impresionante, muchas gracias, tiene mucho sentido. Ahora, ¿puedo hacer referencia a otra cadena (por ejemplo, una cadena que almacena la conjetura de un usuario sobre un carácter que la cadena puede contener) en esa expresión regular que excluye los caracteres? ¿O algo así requiere más de un enfoque transitivo? – awfulwaffle

+0

@ user1019310: Puedes construir la expresión regular sobre la marcha: '" [^ "+ chars +"] "', donde 'chars' es la cadena que contiene los caracteres que deseas excluir. – NPE

+0

^^^ Perfecto, eso es absolutamente lo que necesito. Muchas gracias por ayudar a todos. Publicaré si encuentro más paredes. – awfulwaffle

Cuestiones relacionadas