我有 Java 问题。有一个 Web 应用程序,它具有在后端运行 Javascript 和 Java 的搜索功能。我们只能配置 Java 源代码,不能配置 Javascript。
问题是有一个ArrayList<UserDTO>. 每个UserDTO包含Id,FirstName,LastName,和email。当我*在搜索引擎中输入时,所有的结果都List出现了。问题出在电子邮件上。如果我搜索一个名字或姓氏,则没有问题。当我搜索一封电子邮件时,没有任何效果。它只有在我搜索这样的内容时才有效:fe 电子邮件是 gchat@mail.com,如果我输入,* gchat@mail *我就会找到它。如果我输入.,在那之后,什么都不起作用。另外,如果我不输入*,则没有任何效果。fe 如果我只输入这样的电子邮件:gchat@mail没有任何效果。
这个的源代码是:
public ResponseEntity<List<UserDTO>> search(@PathVariable("query") String query) {
List<UserDTO> results = new ArrayList<>();
if (query != null && !query.trim().isEmpty()) {
for (UserDTO user : USERS) {
String regExp = "^" + query.trim().replace("*", ".*") + "$";
Pattern pattern = Pattern.compile(regExp, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Matcher firstnameMatcher = pattern.matcher(user.getFirstName());
Matcher lastnameMatcher = pattern.matcher(user.getLastName());
Matcher emailMatcher = pattern.matcher(user.getEmail());
if (firstnameMatcher.matches() || lastnameMatcher.matches() || emailMatcher.matches()) {
results.add(user);
}
}
}
清单是这样的:
private static final List<UserDTO> USERS = new ArrayList<>();
static {
USERS.add(new UserDTO("jpap", "John", "Papadopoulos", "jpap@mail.com", true, "EL", new HashSet<>()));
USERS.add(new UserDTO("kpav", "Konstantinos", "Pavlopoulos", "kpav@mail.com", true, "EL", new HashSet<>()));
USERS.add(new UserDTO("echar", "Eleni", "Charalampous", "echar@mail.com", true, "EL", new HashSet<>()));
USERS.add(new UserDTO("gchat", "Georgia", "Chatzipavlou", "gchat@mail.com", true, "EL", new HashSet<>()));
USERS.add(new UserDTO("avel", "Apostolos", "Velis", "avel@mail.com", true, "EL", new HashSet<>()));
USERS.add(new UserDTO("sliol", "Sofia", "Lioliou", "sliol@mail.com", true, "EL", new HashSet<>()));
}
请问有人会帮助我吗?我尝试了不同的类型,但没有任何工作正常。
墨色风雨
慕哥9229398
相关分类