2011-10-29 7 views
5

Sono attualmente in una classe Java di livello introduttivo e sto lavorando sull'assegnazione di ipotesi classica. L'oggetto è che un utente inserisca una frase segreta e un altro lo indovini una lettera alla volta. Tra le ipotesi, la frase deve essere visualizzata come tutti i punti interrogativi tranne le lettere che sono state indovinate correttamente. La nostra classe ha coperto solo alcuni metodi molto basilari, le istruzioni if-else e i loop fino a questo punto, ma sto provando a cercare alcuni metodi di stringa che potrebbero renderlo un po 'più semplice.Come sostituire tutti i caratteri in una stringa di input utente eccetto uno

so dei metodi replace(), replaceAll() e , ma si chiedeva se v'è un metodo che consente di sostituire tutti, ma un personaggio di vostra scelta in una stringa.

Grazie in anticipo

risposta

13

Il modo più semplice è probabilmente quello di utilizzare String.replaceAll():

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

Questo lascerà tutte le lettere a intatti e sostituiranno tutti gli altri personaggi con punti interrogativi.

Questo può essere facilmente esteso a più personaggi, in questo modo:

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

Ciò manterrà tutte le lettere a, e e o e sostituirà tutto il resto.

+0

Impressionante, grazie mille, ha perfettamente senso. Ora, posso fare riferimento a un'altra stringa (ad esempio, una stringa che memorizza l'ipotesi di un utente su un carattere che la stringa può contenere) nella regex che esclude i caratteri? O qualcosa di simile richiede più di un approccio transitivo? – awfulwaffle

+0

@ user1019310: È possibile creare la regex al volo: '" [^ "+ chars +"] "', dove 'chars' è la stringa contenente i caratteri che si desidera escludere. – NPE

+0

^^^ Perfetto, questo è assolutamente ciò di cui ho bisogno. Grazie mille per l'aiuto di tutti. Pubblicherò se incontrerò altri muri. – awfulwaffle

Problemi correlati