我正在处理一个接受字符串的项目,它会创建一个带有字符串名称的文件,但我希望它禁止某些单词。我该怎么做?
String fname = scanner(System.in);
//check if it contains explicit words
if (fname.contains("THE BAD WORD HERE")) {
System.out.println(fname + " contains inappropriate words and is not accepted.");
} else {
System.out.println(fname + " is all good");
//create file
createFile(fname);
}
我是否必须使用for循环并浏览每个字符?还是有更简单的方法?请帮忙。
答案 0 :(得分:1)
你会遍历每个“坏词”并查看字符串是否包含该词。如果是这样,你设置一个标志。
例如:
String[] badWords = new String[5];
//set all of you bad words
String fname = scanner(System.in);
//check if it contains explicit words
boolean containsBadWord = false;
for(String badWord : badWords){
if (fname.contains(badWord)) {
containsBadWord = true;
break;
}
}
if(containsBadWord){
System.out.println(fname + " contains inappropriate words and is not accepted.");
}
else {
System.out.println(fname + " is all good");
//create file
createFile(fname);
}
答案 1 :(得分:1)
考虑使用一组不好的词......
这个问题是跟踪每个不恰当的词。一个更简单的解决方案可能是删除所有元音,因为这不需要大量不恰当的单词 - 如果您不小心允许使用法语或其他语言不合适的单词,该怎么办?
无论如何,这是一个基于HashSet的解决方案:
Set<String> badWords = new HashSet<String>();
badWords.add("f*ck");
badWords.add("sh*t");
... etc
当然,您希望执行不区分大小写的比较:
boolean hasBadWord(String filename, Set<String> badWords) {
String filenameLower = filename.toLowerCase();
for(String badWord : badWords) {
if( filenameLower.contains(badWord) ) {
return true;
}
}
return false;
}
可以在此处找到更多有关集合的内容:java Sets documentation