Переводчик азбуки Морсекод Java

у меня проблема с моим переводчиком Java Morsecode. Я сделал два массива, заполненных символами и азбукой Морзе. Если я хочу перевести код Морзе в текст, метод decode()

public String decode(String mc) {
    StringBuilder sb2 = new StringBuilder();
    // trim() removes whitespaces before or after String
    String mctrim = mc.trim();
    //Morsecode has a short Pause (1 Whitespace) between every character 
    //and a long Pause (3 Whitespaces) between words
    //Splitting the Morsecode to get chars 
    if (mctrim.contains(kurzePause)) {
        String[] mcsplit2 = mctrim.split(kurzePause);
        for (int i = 0; i < mcsplit2.length; i++) {
            sb2.append(getCharacter(mcsplit2[i]));
        }
    }
    return sb2.toString();

должен получить каждый символ через метод getCharacter(). Если символ не указан в массиве, в предложении отображается «$». Теперь я объявил kurzePause (короткая пауза) и langePause (длинная пауза) как переменные. Пробел не является частью моего массива.

Как я могу разделить строку, которая делает различие между блоком из трех пробелов (longPause) и только одним пробелом (shortPause)

Пример данного вывода для правильного кода Морзе (.--- .- ...- .- -- .- -.-. .... - ... .--. .- ... ... .-.-.-): JAVA$$MACHT$$SPASS.

Спасибо за вашу помощь!


person Henrik Peters    schedule 07.09.2014    source источник
comment
Вы можете сначала разбить предложение на предложения (длинная пауза), а во время итерации вы можете разбить текущее предложение на слова (короткая пауза).   -  person Tom    schedule 07.09.2014
comment
Если я правильно понимаю, параметр mc - это ваша азбука Морзе, то есть строка, содержащая только ., - и пробелы? И getCharacter действительно возвращает букву, соответствующую заданной последовательности . и -?   -  person Sylvain Leroux    schedule 07.09.2014


Ответы (1)


Регулярные выражения Java позволяют указать количество вхождений. mctrim.split("\\s{3,}") должен разделить строку на предложения (3 или более пробелов), затем вы можете разбить предложения, используя тривиальное "\\s+".

person Audrius Meskauskas    schedule 07.09.2014