示例生成的代码:910love009tre
我想检查生成的代码中是否包含特定单词。
我正在尝试使用contains
方法,但是看起来好像没有给我想要的输出。
import java.security.SecureRandom;
import java.util.HashSet;
import java.util.Set;
public class AlphaNumericExample {
public static void main(String[] args) {
enter code here
AlphaNumericExample example = new AlphaNumericExample();
Set<String> codes = new HashSet<>();
for (int x = 0;x< 100 ;x++ ) {
codes.add(example.getAlphaNumeric(16));
System.out.println(codes.contains("love"));//Im trying to check if the generated codes that have been stored in hashset have form a word
}
System.out.println("Size of the set: "+codes.size());
}
public String getAlphaNumeric(int len) {
char[] ch = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
char[] c = new char[len];
SecureRandom random = new SecureRandom();//
for (int i = 0; i < len; i++) {
c[i] = ch[random.nextInt(ch.length)];
}
return new String(c);
}
}
答案 0 :(得分:3)
在这种情况下,contains方法检查整个对象是否匹配。如果它包含特定的char序列,则不会,因此13个字符的对象将永远不会匹配4个字母的序列
代替
System.out.println(codes.contains("love"));//Im trying to check if the generated codes that have been stored in hashset have form a word
在每个单独的字符串上尝试contains方法,而不是HashSet的contains方法
for (String code: codes) {
if (code.contains("love") {
System.out.println("found!")
}
}
答案 1 :(得分:0)
像这样使用它
print()
答案 2 :(得分:0)
您正在检查代码集中的完整字符串“ love”。您需要在代码集中的每个代码中检查其是否存在。您可以使用流对此进行检查。
boolean isPresent = codes.stream().anyMatch( code -> code.indexOf( "love" ) != -1 );
答案 3 :(得分:0)
在使用contains查找匹配项之前,应将两个字符串都转换为相同的大小写:
String str = "";
codes.add(getAlphaNumeric(16));
str = codes.toString();
System.out.println(str.toLowerCase().contains("love"));