1

したがって、このような単語の長いリストがあり、最初のスペースに基づいて、単語をword-meaningに分割したいと考えています。基本的にApache POI、docxファイルを読み取ってからデータを取得する必要があるため、これを使用しています。

    abash  humiliate, embarrass
    abdicate  relinquish power or position
    aberrant  abnormal
    abet  aid, encourage (typically of crime)
    abeyance  postponement
    aboriginal  indigenous 
    abridge  shorten
    abstemious  moderate
...

したがって、次のように表示できるように、どの正規表現が私の目的に合うでしょうか。

word :abash
meaning : humiliate, embarrass
...

私のコードは:

public class WordFileReader {

    /**
     * @param args
     */
    public static void main(String[] args) {
         try {
                FileInputStream fis = new FileInputStream("E:\\important.docx");
                org.apache.poi.xwpf.extractor.XWPFWordExtractor oleTextExtractor = new XWPFWordExtractor(new XWPFDocument(fis));
                System.out.print(oleTextExtractor.getText());            
            } catch (Exception e) {
                    e.printStackTrace();
            }

    }

}

--編集--提案された回答に基づいて、これを使用しています

public static void main(String[] args) {
         try {
                FileInputStream fis = new FileInputStream("E:\\Words.docx");
                org.apache.poi.xwpf.extractor.XWPFWordExtractor oleTextExtractor = new XWPFWordExtractor(new XWPFDocument(fis));
                //System.out.print(oleTextExtractor.getText());

                Scanner sc = new Scanner(oleTextExtractor.getText());            
                while(sc.hasNextLine()) {
                 String line = sc.nextLine();
                 int i = line.indexOf(' ');
                 String word = line.substring(0, i);
                 String meaning = line.substring(i).trim();

                 System.out.println("word "+word);
                 System.out.println("meaning "+meaning);
                }

            } catch (Exception e) {
                    e.printStackTrace();
            }

    }

しかし、私は得る

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(Unknown Source)
    at WordFileReader.main(WordFileReader.java:25)
4

4 に答える 4

3

java.util.Scanner を使用してテキストから行を抽出します

Scanner sc = new Scanner(oleTextExtractor.getText());            
while(sc.hasNextLine()) {
    String line = sc.nextLine();
    ...

次に、行を単語と意味に分割します

 int i = line.indexOf(' ', 2);  // start from pos 2 to avoid a article
 String word = txt.substring(0, i);
 String meaning = txt.substring(i).trim();

また

 String[] parts = line.split("(?<!^a)\\s+", 2);
 String word = parts[0];
 String meaning = parts[1];
于 2013-06-10T08:44:26.043 に答える
1

使用java.lang.String.split(String regex, int limit):

String[] parts = line.split("\\s", 1)
String word = parts[0];
String meaning = parts[1];
于 2013-06-10T08:37:28.877 に答える
0

次のように部分文字列を使用できます。

int index = line.indexOf(" ");

"単語: "+ line.substring(0, index)+"\n 意味: "+line.substring(index+1)

于 2013-06-10T08:41:04.210 に答える