Всем доброго времени суток,
У меня есть строка, которая выглядит следующим образом (азбука Морзе):
....x.x.-..x.-..x---xx...x-x.-x-.-.x-.-x---x...-x.x.-.x..-.x.-..x---x.--
один «х» означает, что буква заканчивается в этой точке, дважды«х» означает, что это конец всего слова.У меня есть карта с азбукой Морзе.Я делю строку на «x», затем сравниваю каждую закодированную букву со значениями в моем словаре и добавляю соответствующий ключ в мой StringBuilder, он работает правильно, но я хочу оставить пробелы между словами вместо двойного xx.
Мой кусок кода:
private static final Map<Character, String> morseCode;
static {
morseCode = new HashMap<Character, String>();
morseCode.put('h', "....");
morseCode.put('e', ".");
morseCode.put('l', ".-..");
morseCode.put('o', "---");
morseCode.put('s', "...");
morseCode.put('t', "-");
morseCode.put('a', ".-");
morseCode.put('c', "-.-.");
morseCode.put('k', "-.-");
morseCode.put('v', "...-");
morseCode.put('r', ".-.");
morseCode.put('f', "..-.");
morseCode.put('w', ".--");
}
String decodedMorseTable = "....x.x.-..x.-..x---xx...x-x.-x-.-.x-.-x---x...-x.x.-.x..-.x.-..x---x.--"
StringBuilder decodedText = new StringBuilder();
String[] splitLetters = decodedMorseTable.split("x");
for(String letter: splitLetters) {
for(Map.Entry<Character, String> entry: morseCode.entrySet()) {
if(entry.getValue().equals(letter))
decodedText.append(entry.getKey());
Вывод:
hellostackoverflow