本文介绍了Java的:如何获得扫描仪的第一次出现只匹配并跳过,如果它之前已经被匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我具有由通过存储在一个ArrayList空格分隔的标记字符串列表。我需要扫描如果串1的令牌是字符串2 present我设法用扫描仪扫描的标记。然而,扫描仪没有做什么,我想要的。
我需要建议/意见
结果
1.将帖子例子:有一NN令牌串1,但是有两大NN令牌字符串
2.因此,扫描程序应扫描字符串2 NN令牌。随着code我放弃,扫描仪将搜索所有NN令牌,包括第二NN令牌。它应该停止在第一NN令牌,而不是继续扫描所有NN令牌。 {Haley的破发建议并停止扫描仪】
结果
2.将帖子现在,另一个问题是 - 如果串1有两个NN令牌,扫描仪应该是足够聪明跳过所有在previous扫描中发现的标记。扫描仪应该能够在字符串1第二NN令牌匹配到第二NN令牌字符串2。
结果
这是我迄今为止..
进口的java.util.ArrayList;
进口java.util.Scanner中;公共类TokenMatching { 公共静态无效的主要(字串[] args)
{
ArrayList的<串GT; taggedArray =新的ArrayList<串GT;(); //例字符串会是什么样子
字符串字符串1 =WRB VBD NN VB在CC RB VBP NNP
字符串字符串2 =WRB NN MD PRP VB DT NN在NNS POS JJ NNS taggedArray.add(字符串1);
taggedArray.add(字符串2); //嵌套循环匹配taggedArray(i)与taggedArray(J)
的for(int i = 0; I< taggedArray.size();我++)
{
对于(INT J = I + 1; J< taggedArray.size(); J ++)
{
扫描仪SCAN1 =新的扫描仪(taggedArray.get(I)); INT索引1 = 0;
而(scan1.hasNext())
{
串TOKEN1;
TOKEN1 = scan1.next();
的System.out.println(TOKEN1);
扫描仪SCAN2 =新的扫描仪(taggedArray.get(J)); INT索引2 = 0;
而(scan2.hasNext())
{
串token2 = scan2.next(); 如果(token1.equals(token2))
{
INT relPosition;
relPosition = Math.abs(索引1,索引2); //打印线帮我记录什么是在循环回事
的System.out.println(匹配找到。);
的System.out.println(+ TOKEN1 +的相对位置:+ relPosition); }
其他
{
的System.out.println(没有发现匹配。);
} 索引2 ++;
} 索引1 ++;
}
}
}
}
}
任何意见将是一个很大的帮助。谢谢你。
解决方案
In your if(token1.equals(token2))
add a break;
after System.out.println("Relative position for " + token1 + " : " + relPosition);
. Is the output generated by http://ideone.com/2o5Yz what you want?
这篇关于Java的:如何获得扫描仪的第一次出现只匹配并跳过,如果它之前已经被匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!