文本Java中缺少字符

时间:2016-03-11 18:05:39

标签: java

我有一个小字符串,如:"OT-0*02" 我有一个“数据库”,我有完整的字符串"OT-0502""OT-0602"。 我需要根据用户输入找到这些,这看起来像上面的第一个字符串,星标记未知字符,它可能在任何地方。 我该怎么做呢?我曾经尝试过使用Pattern.matches ......以及正则表达式的东西,但它似乎没有给我任何解决方案。 这是我到目前为止所得到的 rsz="OT-0*02"; int cv = 0; while (cv < jarmu.size()-1){ if (Pattern.matches(jarmu.get(cv).substring(9), rsz)) { System.out.println("fasz"); } cv++; }

1 个答案:

答案 0 :(得分:-1)

听起来你只想要一个简单的通配符搜索,其中*匹配任何字符。为此,将用户输入中的所有*更改为。,并转义其他所有内容。然后你可以将它用作模式。

String userPattern = "O*-0*02";
String[] parts = userPattern.split("\\*", -1);
for (int i = 0; i < parts.length(); i++) parts[i] = "\\Q" + parts[i] + "\\E";
userPattern = String.join(".", parts);

然后使用****.matches(userPattern)检查字符串是否与模式匹配。 基本上,您希望*表示“匹配任何单个字符”,但在正则表达式中,.执行此功能,因此您将*替换为. s。但是,您不希望将任何其他内容解释为特殊字符,因此该字符串在* s处被分解为部分,并且使用\Q和{{1}引用每个部分删除任何特殊含义,然后将\E s与. s放在一起。 -1表示字符串末尾的*不会丢失。