比较两个文本文件的内容和拆分单词java

时间:2015-07-15 17:15:27

标签: java string text arraylist

我知道这个问题已被多次询问,但我无法找到将其应用于我的代码的方法。 所以我的建议如下:  我有两个文件 griechenland_test.txt outagain5.txt 。我想阅读它们,然后在另一个文件中获得 outagain5.txt 的百分比。

Outagain5有这样的输入:

mit dem    542824
und die    517126

Griechenland是来自维基百科的关于该主题的正常文章(所以与正常文本一样,没有频率计数)。

1。问题 - 如何在bigramms中拆分输入?喜欢每两个字,但总是与之前的一个?所以,如果我有单词A,B,C,D - >得到AB,BC,CD?  我有这个:

 while ((sCurrentLine = in.readLine()) != null) {
            // System.out.println(sCurrentLine);
            arr = sCurrentLine.split(" ");
            for (int i = 0; i < arr.length; i++) {
                if (null == hash.get(arr[i])) {
                    hash.put(arr[i], 1);
                } else {
                    int x = hash.get(arr[i]) + 1;
                    hash.put(arr[i], x);
                }
            }

然后我用这段代码读了另一个文件(我只是添加了这个词,而不是数字(我把它分成4个空格,所以这两个词都是h [0])。

 for (String line = br.readLine(); line != null; line = br.readLine()) {
        String h[] = line.split("   ");

        words.add(h[0]);

    }

2。问题 现在我在hash中的String x和单词中的String之间进行比较。我已将else System out.print用于获取 outagain5.txt 中未包含的单词,但是打印出了几个单词,其中 ARE 包含在outagain5.txt中。我不明白为什么:D 因此,我认为比较不能很好地工作,或者这可能会解决,这将解决第一个问题。

    ArrayList<String> words = new ArrayList<String>();
    ArrayList<String> neuS = new ArrayList<String>();
    ArrayList<Long> neuZ = new ArrayList<Long>();

for (String x : hash.keySet()) {
        summe = summe + hash.get(x); 
        long neu = hash.get(x);
        for (String s : words) {

            if (x.equals(s)) {
                neuS.add(x);
                neuZ.add(neu);
                disc = disc + 1;
            } else {
                System.out.println(x);
                break;
            }

        }
    }

希望我明白我的问题,非常感谢!!

1 个答案:

答案 0 :(得分:0)

如果我记得,String有一个名为split(正则表达式,计数)的方法,它将根据特定点拆分项目,你可以告诉它多少次。

我引用了这个JavaDoc https://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String,int)。

我想在两个文本文件之间运行比较时,我建议让你的代码读取它们,填充两个独特的数组,然后尝试每次在两个字符串之间进行比较。希望我帮忙。