2017-04-04 5 views
-2

単語の省略形とそのフルフォームをハッシュマップに入れる必要があるという問題があります。それから、あなたに言葉を尋ねるプログラムを作って、あなたのために地図から完全な言葉を印刷する必要があります。私は1つの単語でそれをすることができますが、問題は文字列で多くのキーを要求するときです。例えば文字列を分割し、HashMapからキーで値を取得する

考えると言葉:

tran. all of the wo. f. me 

//この時点で私は、キー値と値としての完全な形としてHashMapのためにドットを持つ単語のすべてを入れています。これで、指定された単語をフルバージョンとして印刷し、点在する単語を値で置き換えます。

フルバージョン:

translate all of the words for me 

あなたが尋ねたすべての値を印刷する方法を、一つの文章に複数のキーを尋ねていますか?

//この作業を行うには.splitを使うべきだと思いますが、どのように動作するのかよくわかりません。

ありがとうございました!

+4

やご質問がある – Andres

+0

を@SimpsonDちょうどそれらを理解するためにあなたの質問は簡単に、ここで支援する準備ができて人々がたくさんあります。そのうちの一つは、以下の通りです。 – Eugene

+0

私はベストを尽くしています。質問:複数のキーが1つの文で尋ねられたときに、質問された値をすべて印刷する方法。 – SimpsonD

答えて

0

入力したすべての単語を取得してString[]に保存してから、これらの単語を繰り返してマップからそれぞれの値で変更しようとすると便利です。

あなたのコードは次のようになります。

Map<String, String> abbrev = new HashMap<String, String>(); 

String str="tran. all of the wo. f. me"; 
String[] words = str.split(" "); 
String result = ""; 

for (String word : words) { 
    if(abbrev.get(word) != null){ 
     result= result+ abbrev.get(word); 
    }else{ 
     result= result+ word; 
    } 
    result= result+ " "; 
} 

注:結果Stringを構築するための最良のアプローチとしてStringBuilderを使用することができます

注意。

はDEMO:

これはworking DEMOです。

0

私はそれはあなたが何を意味するかだと思う:

String yourString = "tran. all of the wo. f. me"; 

for(String word : yourString.split("\\s+")) 
    System.out.println(map.get(word)); 

スプリットはスペースで分離し、文字列からすべての単語を取得するために使用されます。

0

あなたの目標を達成する方法はたくさんあります。 ....

 Map<String, String> map = new HashMap<>(); 
    map.put("tran", "translate"); 
    map.put("wo", "words"); 
    map.put("f", "for"); 

    String word = "tran. all of the wo. f. me"; 
    String[] words = word.split(" "); 
    for(int i=0;i<words.length;i++) { 
     if(words[i].endsWith(".")) { 
      words[i] = map.get(words[i].substring(0, words[i].length() - 1)); 
     } 
    } 
    word = String.join(" ", words); 
関連する問題