2016-08-19 7 views
0

単語と意味をファイルから分離してから、それぞれの単語をsqlite(WORDS)テーブルに格納し、対応する意味を別の(意味)テーブルに保存します。ファイルからJavaの単語と意味

ファイルは次のようになります。

word 1 
    explanation 1 
    explanation 1 
    explanation 1 

    explanation 1 
word 2 
    explanation 2 
    explanation 2 

    explanation 2 
    explanation 2 
word 3 
    explanation 3 
    explanation 3 
    explanation 3 

    explanation 3 
word 4 
    explanation 4 

    explanation 4 

    explanation 4 

ここで問題となるのは、単語と意味を1対1で分ける方法を理解できないことです。説明行の間のスペースは、分割しても存在するはずです。

これまでに試したサンプルコードを示します。

Scanner sc = new Scanner(file); 
String abbr = ""; 
String exp = ""; 
String line; 
while (sc.hasNext()) { 
    if (!(line = sc.nextLine()).isEmpty() && !(line.startsWith(" "))) { 
     abbr = line; 
     //Debug 
     System.out.println(abbr); 
     printExp(exp); 
     exp = ""; 
    } else if (line.isEmpty() || line.startsWith(" ")) { 
     exp += line; 
    } 
} 

デバッグ目的で使用される方法。

public static void printExp(String exp) { 
    if (!exp.equals("")) { 
     System.out.println(exp); 
    } 
} 

あなたは他の単純な解決策、たとえば正規表現を通して考えることができます。 ヘルプは非常に高く評価されます。私が正しくundertand場合

+2

"ファイルは次のようになります。"エル、いいえ、それはイメージです。テキストファイルにはテキストが含まれています。 – Stewart

+0

...実験するのが簡単です。 – ClasG

+0

OK。ファイルのレイアウトを覚えておいてください。 – CodeRunner

答えて

0

、これはあなたのためにそれを行う可能性があります:

^(\w.*)((?:\n(?:$|\W).*)*) 

それは単語の文字で始まる行をキャプチャします。次に、スペースで始まる行数または空の行数を取得します。

See it here at regex101

+0

あなたはそれを正しくしています。上記のコードでこれを採用してもよろしいですか? Thnx – CodeRunner

関連する問題