2016-03-01 2 views
0

У меня есть следующий код, который отображает определенные символы строки в письмах:Как использовать значения HashMap для формирования строки?

String a = "94466602777330999666887770223377778077778 883 336687777"; 
    String[] tokens = a.split("(?<=(.))(?!\\1)"); 
    Map<String, String> hmap = new HashMap<String, String>(); 

    hmap.put("2", "A"); 
    hmap.put("22", "B"); 
    hmap.put("222", "C"); 
    hmap.put("3", "D"); 
    hmap.put("33", "E"); 
    hmap.put("333", "F"); 
    hmap.put("4", "G"); 
    hmap.put("44", "H"); 
    hmap.put("444", "I"); 
    hmap.put("5", "J"); 
    hmap.put("55", "K"); 
    hmap.put("555", "L"); 
    hmap.put("6", "M"); 
    hmap.put("66", "N"); 
    hmap.put("666", "O"); 
    hmap.put("7", "P"); 
    hmap.put("77", "Q"); 
    hmap.put("777", "R"); 
    hmap.put("7777", "S"); 
    hmap.put("8", "T"); 
    hmap.put("88", "U"); 
    hmap.put("888", "V"); 
    hmap.put("9", "W"); 
    hmap.put("99", "X"); 
    hmap.put("999", "Y"); 
    hmap.put("9999", "Z"); 
    hmap.put("1", "."); 
    hmap.put("0", " "); 

После этого HashMap, я хочу вернуться в строку, которая кроющих мою предыдущую строку «94466602777330999666887770223377778077778 +883 336687777» в «КТО ВАШИ ЛУЧШИЕ СТУДЕНТЫ»

+1

Как вы можете отличить '4' (' G') от '44' (' H')? –

+0

У вас уже есть хороший намек, который разбивает переменную 'a' на' tokens'. просто переберите его и получите соответствующую строку с помощью 'hmap.get()' – ymonad

+0

Jecod, я не думаю, что вы поняли вопрос Тима. Когда вы намереваетесь получить письмо от своего HashMap, вы обычно будете называть map.get (key), где. Поэтому, если вы повторяете свою строку цифр. как вы знаете, когда нужно получить ключ = 4 или ключ = 44 или ключ = 444? У вас должен быть какой-то способ сделать это определение. И если вам нужна приличная помощь ... вы можете поделиться ею. – pczeus

ответ

0

Вы можете использовать класс StringBuilder для формирования String.

2

Как вы уже упоминали, вы уже разделили свой вход в массив строк.

StringBuilder builder = new StringBuilder(); 

for (String s: tokens) {   
    builder.append(hmap.get(s)); 
} 

String result = builder.toString(); 
+0

Это не сработало. вернулся: ВОЗ - ВАШ ЛУЧШИЙ STnullUDnullents. Похоже, что это небольшая проблема с используемым регулярным выражением, не связанным с вашим ответом. – pczeus

+0

почему downvote? Вопрос в том, как получить значение с карты. –

+0

Он уже написал, у него строковый массив, он просто не знает, как использовать карту. –

Смежные вопросы