需要一些帮助才能找到两个字符串之间匹配的标记数。我在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 在这里,您可以看到每个字符串都由一串由空格分隔的标记组成。所以,有三件事我需要处理..。
我尝试过使用拆分字符串并将其存储到String[],但是String[]是固定的,不允许收缩或添加新元素。尝试了模式匹配,但结果很糟糕。尝试了一些其他方法,但是嵌套的for循环有一些问题。(如果有帮助的话,我会发布我的部分代码)。
任何关于如何解决这个问题的建议或建议都是非常感谢的。非常感谢。
发布于 2012-09-04 10:20:31
你试过使用扫描仪吗?
如果不是的话,完全可以。看起来是这样的:
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中选择不同行的循环,您需要的是将每个数组元素与每个其他数组元素进行比较(如果没有这种解释,这可能是google最好的方法)。
在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的值,从而在纸上解决它。
发布于 2012-09-04 09:38:41
以不同的方式思考这个任务。您希望扫描令牌(例如:扫描器),并且希望匹配令牌(因此:一个列表,因为您需要订单)。然后迭代每个令牌的不同集合,记录匹配和距离。
https://stackoverflow.com/questions/12260653
复制相似问题