需要一些帮助才能找到两个字符串之间匹配的标记数。我有一个存储在ArrayList中的字符串列表(示例如下):
Line 0 : WRB VBD NN VB IN CC RB VBP NNP
Line 1 : WDT NNS VBD DT NN NNP NNP
Line 2 : WRB MD PRP VB DT NN IN NNS POS JJ NNS
Line 3 : WDT NN VBZ DT NN IN DT JJ NN IN DT NNP
Line 4 : WP VBZ DT JJ NN IN NN
在这里,您可以看到每个字符串由一堆由空格分隔的标记组成。所以,我需要处理三件事......
我尝试过使用split string并将其存储到String []但String []是固定的,不允许缩小或添加新元素。尝试模式匹配但有灾难性的结果。尝试了一些其他的方法,但是我的嵌套for循环有一些问题..(如果有帮助,我会发布部分编码)。
关于如何解决这个问题的任何建议或指示非常感谢。非常感谢你。
答案 0 :(得分:0)
以不同的方式思考任务。您想要扫描令牌(因此:扫描仪),并且您想要匹配令牌(因此:列表,因为您需要订购。)然后您将遍历每个令牌的不同集合,注意匹配和距离
答案 1 :(得分:0)
您是否尝试过使用Scanner?
如果没有,完全做到。它看起来像这样:
String line1 = ... // your line 1
String line2 = ... // your line 2
Scanner s1 = new Scanner(line1);
int i1 = 0;
while (s1.hasNext()) {
String token1 = s1.next();
Scanner s2 = new Scanner(line2);
int i2 = 0;
while (s2.hasNext()) {
String token2 = s2.next();
// now you have token1, token2 and their positions (i1, i2)
// do whatever you want with them
i2++;
} // end reading line2
i1++;
} // end reading line1
编辑:关于你在Arraylist中选择不同行的循环,你需要的是将每个数组元素与每个其他数组元素进行比较(如果这个解释是缺乏)。
在Java中看起来像这样:
for (int i = 0; i < thearraylist.size()-1; i++) {
for (int j = i+1; j < thearraylist.size(); j++) {
// now the elements and indices i and j are compared
// if we were running into my code above:
String line1 = thearraylist.get(i);
String line2 = thearraylist.get(j);
// ... and then compare them
}
}
第二个循环从i + 1开始的原因是消除这些不必要的比较:
如果您发现这一点令人困惑,我强烈建议您在浏览循环时列出i和j的值,从而在纸上进行处理。