java文本输出中的第一个单词

时间:2014-10-15 09:44:59

标签: java

我正在尝试阅读我的100k +单词词典中的第一个单词,我是java的新手,所以饶了我:D

字典看起来像这样:

naklestite  naklestiti  Ggdvdm  0
nakljuÄŤiti nakljuÄŤiti Ggvn    1
nakljuÄŤit  nakljuÄŤiti Ggvm    0
nakljuÄŤil  nakljuÄŤiti Ggvd-em 0

我需要复制新.txt文件中的所有第一个单词以获得输出,如下所示:

naklestite  
nakljuÄŤiti 
nakljuÄŤit  
nakljuÄŤil

到目前为止,我将整行作为输出而不是第一个单词。

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class moja {

    public static void main(String[] args) {
        try {
            File file = new File("SloveneLexicon.txt");
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            StringBuffer stringBuffer = new StringBuffer();
            String word;
            while ((word = bufferedReader.readLine()) != null) {

                String s = word;
                String[] fragments = s.split(" ");
                String firstColumn = fragments[0];
                System.out.println(firstColumn);
            }
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

好吧,我们有Find PID of process that use a port on Windows的基础,你现在有了初步的代码草案。

如果你告诉我上面的代码会输出整行你的文件,而不是它的"首先"专栏我可以想象的原因是你的单词之间的空白不是像你用键盘的空格键产生的那些空格(但可能是"看不见的"标志或类似的东西)。

你的文件看起来像这样:

naklestite naklestiti Ggdvdm 0
nakljuÄŤiti nakljuÄŤiti Ggvn 1

我将其描述为:

<wordVariableLength><Blank><WordVariableLength><Blank><WordVariableLength><Number><EOL>

或更像这样?

naklestitenaklestitiGgdvdm0nakljuÄŤitinakljuÄŤitiGgvn1

当您处理输入文件的行并且具有:

System.out.println(word);
System.out.println("check");

它会导致像这样的输出吗?:

naklestite naklestiti Ggdvdm 0
check
nakljuÄŤiti nakljuÄŤiti Ggvn 1
check
...

只要你甚至不能选择一个专栏&#34;你的原始输入我看到很难有机会再帮助你:(

答案 1 :(得分:0)

这是问题

String[] fragments = s.split(" ");

你试图用“”单个空格分开但是单词之间没有完全单一的空格。你得到了整行,因为没有单独的空格来分隔单词

naklestite  naklestiti  Ggdvdm  0
nakljuÄŤiti nakljuÄŤiti Ggvn    1
nakljuÄŤit  nakljuÄŤiti Ggvm    0
nakljuÄŤil  nakljuÄŤiti Ggvd-em 0

大多数单词之间有2个空格,有3个空格和1个空格。没有被授予单个空格或2个空格。你想要做的是按white spaces而不是空格分割单词。这会将单词分成一个或多个连续的空格。

所以你必须改变这一行

String[] fragments = s.split(" "); 

String[] fragments = s.split("\\s+");

这个。然后你会得到正确的输出

输出&GT;&GT;

naklestite
nakljuÄŤiti
nakljuÄŤit
nakljuÄŤil