使用String.contain(number)在字符串中查找相同的数字

时间:2017-08-23 12:42:45

标签: java

我被困在这一段时间了:

我想得到一个字符串(名为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,但没有显示任何内容。有人可以帮忙吗?

2 个答案:

答案 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都遵循相同的格式,你可以尝试一下:)