我试图在Java中使用Pattern
而我遇到了问题。
我想从包含数字(我从文件中检索到)的String[]
中找到它们是否匹配另一串数字(也来自文件)。
E.g。我有一个数字1
,我想在这样的字符串中搜索:
5 10 1 8 6 3 -1 10 8 10 10 4 10 -1 10 10 10 10 9 10 -1 10 10 10 10 10 10 -1 10 10 10 10 10 10 -1 -2
。
显然,-1
和10
并非我锁定的内容。有办法解决这个问题吗?
我无法使用带有整数的Pattern.compile()
。
答案 0 :(得分:0)
有两种方法:
文件中的数字用空格分隔,因此您可以像这样编写模式
String number = "1";
String file = "5 10 1 8 6 3 -1 10 8 10 10 4 10 -1 10 10 10 10 9 10 -1 10 10 10 10 10 10 -1 10 10 10 10 10 10 -1 -2";
file = " " + file + " "; // this is a hack to make the pattern to be right
boolean matches = Pattern.matches(".*\\s+" + number + "\\s+.*", file);
System.out.println(matches); // => true
如果从文件中删除“1”,则匹配将为false。由于这些空格,它将与文件中的“-1”和“10”不匹配。
ps:因为模式只匹配空格包围的数字,如果数字在文件的开头,并且数字前面没有空格,则它将不匹配。所以我做了黑客攻击。
您可以将文件(也使用seprator空间)拆分为数组,然后进行迭代和比较。