如何替换用户输入中的特定单词并将其显示为星号。这是我的代码。
String[] filteredWords = ["apple", "banana", "orange"];
private String convertWord(String input) {
StringBuilder asterisk = new StringBuilder();
for (String filter: filteredWords) {
if (input.toLowerCase().contains(filter)) {
for (int i = 0; i < filter.length(); i++) {
asterisk.append("*");
}
input = input.replace(filter, asterisk.toString());
}
}
return input;
}
Run Code Online (Sandbox Code Playgroud)
例如,用户输入或输入“这是苹果而不是橙子”,预期输出将是“这是*****而不是******”。
但我的问题是,当用户输入(带有字符大小写)“This is Apple and not oRaNGE”或“This is aPpLe and not Orange”时,输出没有改变。苹果和橙子这个词没有被星号取代。
任何帮助表示赞赏。谢谢!
我喜欢在这里使用正则表达式替换,其中包含所有搜索词的交替:
String[] filteredWords = { "apple", "banana", "orange" };
String regex = "(?i)\\b(?:" + String.join("|", filteredWords) + ")\\b";
private String convertWord(String input) {
input = input.replaceAll(regex, "*");
return input;
}
convertWord("Apple watermelon ORANGE boot book pear banana");
Run Code Online (Sandbox Code Playgroud)
上述方法调用的输出是:
* watermelon * boot book pear *
Run Code Online (Sandbox Code Playgroud)