我有一个字符串列表,由存储在 ArrayList 中的空格分隔的标记组成。我需要扫描字符串 1 中的标记是否存在于字符串 2 中。我设法使用 Scanner 扫描标记。但是,扫描仪并没有做我想要的。
我需要关于 1 的建议/建议
。[已编辑] 示例:字符串 1 中有一个 NN 令牌,但字符串 2 中有两个 NN 令牌。因此,扫描仪应该扫描字符串 2 中的 NN 令牌。使用我提供的代码,扫描器将搜索所有 NN 令牌,包括第二个 NN 令牌。它应该在第一个 NN 令牌处停止,而不是继续扫描所有 NN 令牌。{Haley 关于 break 的建议确实停止了 Scanner}
2. [EDITED] 现在,另一个问题是 - 如果 String 1 有两个 NN 令牌,则 Scanner 应该足够聪明,可以跳过之前扫描中找到的所有令牌。Scanner 应该能够将字符串 1 中的第二个 NN 令牌与字符串 2 中的第二个 NN 令牌相匹配。
这是我到目前为止所拥有的..
import java.util.ArrayList;
import java.util.Scanner;
public class TokenMatching {
public static void main(String[] args)
{
ArrayList<String> taggedArray = new ArrayList<String>();
//Example how the string would look like
String string1 = "WRB VBD NN VB IN CC RB VBP NNP";
String string2 = "WRB NN MD PRP VB DT NN IN NNS POS JJ NNS";
taggedArray.add(string1);
taggedArray.add(string2);
//Nested for loop to match taggedArray(i) with taggedArray(j)
for(int i = 0; i< taggedArray.size(); i++)
{
for(int j = i + 1; j < taggedArray.size(); j++)
{
Scanner scan1 = new Scanner(taggedArray.get(i));
int index1 = 0;
while(scan1.hasNext())
{
String token1;
token1 = scan1.next();
System.out.println(token1);
Scanner scan2 = new Scanner(taggedArray.get(j));
int index2 =0;
while(scan2.hasNext())
{
String token2 = scan2.next();
if(token1.equals(token2))
{
int relPosition;
relPosition = Math.abs(index1-index2);
//The print lines help me keep track of what is going on in the loop
System.out.println("Match found.");
System.out.println("Relative position for " + token1 + " : " + relPosition);
}
else
{
System.out.println("No Match Found.");
}
index2++;
}
index1++;
}
}
}
}
}
任何建议都会有很大帮助。谢谢你。