Помощь на лучший способ анализирует цифры из строки в Java

у меня есть строка, которая содержит цифры и буквы. Я желаю, чтобы разбить строку на непрерывные блоки цифр и непрерывных фрагментов писем.

Рассмотрим Строку "34A312O5M444123A".

я хотел бы, чтобы выход:["34", "В", "312", "O", "5", "M", "444123", "A"]

у меня есть код, который работает и выглядит следующим образом:

List<String> digitsAsElements(String str){
  StringBuilder digitCollector = new StringBuilder();

  List<String> output = new ArrayList<String>();

  for (int i = 0; i < str.length(); i++){
    char cChar = str.charAt(i);

    if (Character.isDigit(cChar))
       digitCollector.append(cChar);
    else{
      output.add(digitCollector.toString());
      output.add("/"+cChar);

      digitCollector = new StringBuilder();
    }         
  }

  return output;
}

я считал разделение ул дважды, чтобы получить массив, содержащий все цифры куски и массив, содержащий все письма куски. Затем слияние результатов. Я уклонялся от этого, как она могла бы нанести ущерб удобочитаемости.

я намеренно избегал решении этого с regex-шаблон, как я считаю, regex структуры, чтобы быть главным препятствием для удобочитаемости.

  • Отладчики не справиться с ними.
  • Они прервать поток кто-то, прочитав исходный код.
  • Сверхурочные regex расти органически, и стать монстров.
  • Они глубоко не понятный.

Мои вопросы:

  • Как я могу улучшить читаемость кода выше?
  • существует ли лучший способ сделать это? В Util класс, который решает эту проблему элегантно.
  • Где провести черту между использованием regEx и кодирования что-то simpilar к тому, что я написал выше?
  • Как увеличить читаемость/ремонтопригодность регулярные выражения?

Найдено 8 ответов:

Help on a better way to parses digits from a String in Java

http://stackoverflow.com/questions/952614/help-on-a-better-way-to-parses-digits-from-a-string-in-java

Посмотреть решение →