2016-08-31 17 views
-2

それ以降の言語で「言語:」という文字列を検索する必要があります。Javaでgrepをシミュレートする(Windows)

2言語しかない場合は、「言語:英語、ドイツ語」と 「言語:ドイツ語、英語」を検索できます。 3つある場合は、6つの異なる組み合わせを探す必要があります。 4の場合、24の組み合わせがあります。 5の場合、120などがあり、それは扱いにくいです。

私は何かをしたいと思います

grep言語|グレープ英語|グレープ・ドイツ語|グレープ・イタリア語|グレープデンマーク語| grepフランス語 (または私が探している言語が何であれ)。私はWindows上でgrepを使うことはできないと思う。私は正規表現を使用することができますが、どのようにして順番に言語をリストすることができるかを知る方法はわかりません。

どうすればよいですか? リスト<文字列>言語探したいすべての言語を使用しています。

+1

あなたは、Javaからテキストファイルを検索する方法を求めていますか?もしそうなら、あなたはウェブを検索して例を見つけることができませんでしたか? ---また、[regex '|'構造体(https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#logical)のどの部分があなたを混乱させていますか? – Andreas

+0

いいえ。文字列にテキストがあります。私はそれが似ていると思います。 macthとcontainsをやりかえしたり置き換えたりする方法はわかっていますが、いくつかの文字列を指定する方法はわかりません。どちらもどちらの順序でもかまいません。 – Tony

+0

文字列内にテキストがある場合は、なぜJavaとは別のコマンドラインプログラムである 'grep'を実行したいのですか? ---あなたの文について*「正規表現を使うことができますが、言語を任意の順序でリストする方法はわかりません」*、私は再び質問します:正規表現のどの部分?あなたを混乱させていますか?たぶん正規表現についてもっと詳しく学ぶべきでしょう。 – Andreas

答えて

0

ここにあなたを始めてみましょう。あなたがそれを開発できることを願っています。

boolean english = false; 
    boolean danish = false; 
    boolean hopi = false; 
    boolean mandarin = false; 
    if (inputString.contains("Languages: ")) { 
     if (inputString.contains("English")) { 
      english = true; 
     } 
     if (inputString.contains("Danish")) { 
      danish = true; 
     } 
     if (inputString.contains("Hopi")) { 
      hopi = true; 
     } 
     if (inputString.contains("Mandarin")) { 
      mandarin = true; 
     } 
     System.out.println("English? " + english + " Danish? " + danish + " Hopi? " + hopi + " Mandarin? " + mandarin); 
    } 

つ以上または5つの言語がある場合は、おそらく、多分、彼らの上にあなたがサポートする言語を表現するクラスまたは列挙型をいくつかの抽象化をお勧めします。 EnumSetは、文字列内にどの言語が表示されているかを無視するのに便利でしょうか?

ところで、あなたは正規表現が必要ないことに気付きましたか?

編集:あなたはList<String> languageListを持っている場合、あなたが好きにしたいことがあります。

Set<String> languagesInInput = new HashSet<>(); 
    for (String language : languageList) { 
     if (inputString.contains(language)) { 
      languagesInInput.add(language); 
     } 
    } 
+1

ありがとうございました。私はそのコメントをするつもりだった。 1つの文字列にすべての言語を入れて調べることができればうれしいですが、それらは必ずしもアルファベット順ではないと思います。私はString txt = pageText.replaceAll( "。* Languages"、 "Laungages")のようなことをすることができます。replaceAll( "\\ n。* $"、 "")次に、私はsplitを使って配列に入れ、次にセットに入れてセットを比較することができます – Tony

+0

これは良い、実行可能な方法のように思えます。 –

関連する問題