2017-02-16 13 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 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 

Как использовать строки # toCharArray() и String.valueOf (символьные [] данные)

Вы можете использовать цикл вместо этого.

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

Как использовать методы String # toCharArray() и String.ValueOf (char []) без использования пустогоString (str.split (""))? –

+0

@H_M Вы можете сделать что-то вроде этого, но это некрасиво. Это помогло бы, если бы вы использовали «Map map'. –