我被困在这一段时间了:
我想得到一个字符串(名为b)并将其与String列表中的元素匹配,其中包含许多数字。例如:
if (list.get(i).split(";")[1].split("\t")[7].contains(b))
所以我用过这个:
ArrayList<String> ids = remove(list);
String matches []="532","533","534","535","5","537","538","539","540","541"};
for (String b : matches){
for (String element : ids) {
if(element.contains(b))
System.out.println(element);
}
}
但是当它到达比赛b = 5时,它会显示其中包含5的所有值,而不仅仅是元素&#34; 5&#34;。
我使用了.equal
,但没有显示任何内容。有人可以帮忙吗?
答案 0 :(得分:2)
这听起来像是id列表元素中的白色字符的潜在问题。也许您可以尝试使用代码中的这种变体:
ArrayList<String> ids = remove(list);
String matches [] = new String[] {"532","533","534","535","5","537","538","539","540","541"};
for (String b : matches) {
for (String element : ids) {
if(element.indexOf(b) > 0 &&
!Character.isDigit(element.charAt(element.indexOf(b)-1)) &&
(element.indexOf(b) >= element.length()-b.length() ||
!Character.isDigit(element.charAt(element.indexOf(b)+b.length())))) {
System.out.println(element);
} else {
System.out.println(">"+element"<-->"+b+"<");
}
}
}
通过这种方式,您可以检查被拒绝的元素,看看b
与您尝试匹配的项目之间的区别。我添加的trim
可能足以提供帮助,如果没有 - 您可以查看差异并了解如何最好地解决问题。
答案 1 :(得分:1)
我看到您的 ID 的格式为"U-LEU 533-435"
for(String element : ids){
String temp = element.replaceAll("\\s", "-");
String[] firstSplit = temp.split("-");
for(String s : firstSplit){
if(s.equals(b)){
System.out.println(element);
}
}
}
如果你的所有ID都遵循相同的格式,你可以尝试一下:)