2017-02-16 6 views
0

文字列の各文字をマップのキーと比較するにはどうすればよいですか? 各文字がマップのキーとして存在する場合は、大文字に変更します。文字列とマップの比較

String str = "abcdef"; 
Map<String, String> map = new HashMap<String, String>(); 
map.put("a", "A"); 
map.put("b", "B"); 
map.put("c", "C"); 
map.put("d", "D"); 
map.put("e", "E"); 

結果は"ABCDEf"でなければなりません。 文字列の文字がマップに存在しない場合、その文字はそのまま残ります。

+1

「アルファベット」とは「文字」を意味しますか? – khelwood

+0

はい、 "a"を "A"に変更し、結果をABCDEfにする必要があります。 –

答えて

6

あなたは私はあなたがして代わりにループを使用することができます

のString#toCharArray()とString.ValueOf(文字[]のデータ)を使用するにはどうすればよい

String after = Stream.of(str.split("")) // a stream of a String for each letter 
        .map(c-> map.getOrDefault(c, c)) // look up replacement or leave 
        .collect(Collectors.joining("")); //join into string with no separator 

を行うことができます。

char[] chars = str.toCharArray(); 
for (int i = 0; i < chars.length;i ++) 
    chars[i] = map.getOrDefault(""+chars[i], ""+chars[i]).charAt(0); 
String after = new String(chars); 
+1

ありがとう、それは仕事です。 :D –

+0

emptyString(str.split( ""))を使用せずにString#toCharArray()とString.ValueOf(char [] data)メソッドを使用するにはどうすればよいですか? –

+0

@H_Mあなたはこのようなことをすることができますが、それはきれいではありません。代わりに 'Map map'を使用すると助けになります。 –