如何替换用户输入字符串中除一个字符外的所有字符

5

我目前正在学习入门级Java课程,并且正在完成经典的猜短语任务。任务要求一个用户输入一个秘密短语,另一个用户每次只能猜一个字母。在每次猜测之间,短语必须显示为所有问号,除了已经正确猜出的字母。到目前为止,我们的课程只涵盖了一些非常基本的方法、if-else语句和循环,但我正试图研究一些字符串方法,这可能会让这个任务变得更容易。

我知道 replace(), replaceAll()contains() 方法,但想知道是否有一种方法可以替换字符串中除一个指定字符以外的所有字符。

提前感谢您的帮助!

1个回答

19

最简单的方法可能是使用 String.replaceAll()

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

这将保留所有字母 a 不变,并用问号替换所有其他字符。

此方法可以轻松扩展到多个字符,如下所示:

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

这将保留所有的字母 a, eo,并替换其他所有内容。


太棒了,非常感谢,这很容易理解。现在,我能否在该正则表达式中引用另一个字符串(比如存储用户猜测的字符串),以排除某些字符?或者这需要更多类似于传递性的方法吗? - awfulwaffle
你可以动态构建正则表达式:"[^" + chars + "]",其中chars是包含你想要排除的字符的字符串。 - NPE
太好了,那正是我需要的。非常感谢大家的帮助。如果我遇到更多问题,我会再发帖的。 - awfulwaffle
还有一个问题,我该如何在替换字符时排除空格字符? - awfulwaffle
1
@user1019310:就像其他字符一样,将它们添加到正则表达式中即可,例如 "[^ aeo]" - NPE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接