Обучение и трудоустройство Java-программистов от Junior до Senior

Подбор алгоритма для вывода не печатаемых символов

 
 
 
Сообщения:61
Можно ли назвать данный код плохим и неоптимизированным?
static String ShowNonprinting(String str)
  {
    char c;
    StringBuilder s = new StringBuilder("");
    for(int i=0; i<str.length(); i++)
    {
      c = str.charAt(i);
      if(c == '\u001a')
        s.append("^Z");
      else if(c == '\u0018')
        s.append("^X");
      else if(c == '\u0003')
        s.append("^C");
      else
        s.append(c);
    }
    return s.toString();
  }

В linux команда cat с ключом -v выдает такой-же результат для строк. Если встречается ascii символ, то данная функция просто заменяет его на нужный код.
Но проблема в том, что если добавить все нечитаемые символы, то получится очень большой код.

Программирование начинается с себя
Изменен:02 окт 2017 16:49
 
 
Сообщения:514
HACKERZET:
Можно ли назвать данный код плохим и неоптимизированным?

Я разрешаю, если что.

Я только учусь
 
 
Сообщения:61
Tachkin:
HACKERZET:
Можно ли назвать данный код плохим и неоптимизированным?

Я разрешаю, если что.


Мне нужен ответ от профессионала. Так как я пишу не смотря в исходники linux программ.

Программирование начинается с себя
 
 
Сообщения:514
HACKERZET:
Мне нужен ответ от профессионала
Аааа.... ну, извини, тогда.

Я только учусь
 
 
Сообщения:1
Я тебе помогу.
На самом деле всё очень просто. Все эти символы просто идут вот так: 00,01,02 и т.д.
Берём и ASCII символы сравниваем, а когда будет подходящий просто ставим нужную букву.
Код проверен и без багов:
static String ShowNonprinting(char c)
  {
    String s = "";
    boolean change=false;
    if(c == '\u007f') {
      s+="^?";
      change=true;
    }
    else
      for(int i=1, b=65; i<=31; i++, b++) //65 это 'A'
      {
        if(i==10) continue;
        if(c == i) {
          s+="^"+(char)b;
          change=true;
          break;
        }
      }
    if(!change) s+=c;
    return s;
  }

Как видишь код получился маленький.
Изменен:14 окт 2017 21:39
 
 
Сообщения:34
JAVA-Proffesional:
Я тебе помогу.

зачетный ник
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет