Java中是否存在通配符这样的东西?

use*_*522 7 java comparison wildcard

我正在运行一个比较程序,并且它在一分钟内进行直接的"字符串到字符串"比较,如果它们是完全匹配,则输出它们是匹配的.

好吧,我希望增加一个允许"相似性"的附加功能......

例如:

String em1 = "52494646";
String em2 = "52400646";


if (em1.equals(em2)){
    output.writeUTF(dir + filenames[i]);
}
Run Code Online (Sandbox Code Playgroud)

这是代码的一小部分.我喜欢它,以便它跳过"00"并仍然将其识别为"几乎"相同的数字并仍然输出它.

我想它会看起来像什么,String em2 = "524"+ ## +"646"但这显然只是一个概念

有没有人知道是否有办法拥有这种"通配符"(我从uni SQL中选择的一个术语),或者是否有另一种方法来做这种相似类型的交易.

谢谢 :)

Joa*_*uer 14

您可以使用正则表达式:

if (em1.matches("524[0-9]{2}646")) {
  // do stuff
}
Run Code Online (Sandbox Code Playgroud)


aio*_*obe 7

您可以使用正则表达式轻松解决它:

if (em1.matches("524..646"))
Run Code Online (Sandbox Code Playgroud)

例如.

(这.是一个代表任何字符的通配符.\\d如果您想将通配符限制为数字,可以替换它.)

这是一个更通用的变体,它与任何字符匹配"0":

String em1 = "52494646";
String em2 = "52400646";

if (em1.matches(em2.replaceAll("0", "\\\\d"))){
    System.out.println("Matches");
}
Run Code Online (Sandbox Code Playgroud)