Java 如何使用通配符搜索模式?
我有 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<>())); }请问有人会帮助我吗?我尝试了不同的类型,但没有任何工作正常。
查看完整描述