Оптимизация кода с replace()

95
09 сентября 2019, 09:30

Есть небольшая програма по форматированию строки с использованием регулярного выражения. В коде присутствует множесвенное использование функции replace(), для нахождения хаотичных пробелов перед\после разделительными знаками и замены на правильные:

buffer = this.replace("\s*,\s*", ", ")
buffer = buffer.replace("\\s*(?<!\\.)\\.(?!\\.)\\s*", ". ")
buffer = buffer.replace("\\s*\\.{3}\\s*", "... ")
buffer = buffer.replace("\\s*'\\s*", "'")

где this это строка. Насколько я понял в данном случае програма 4 раза перебирает строку и заменяет удовлетворяемые регулярное выражение символы, что уже есть не хорошо.

1) Уместно ли использовать такой подход для форматирования строки?

2) Есть ли относительно простой способ замены символов в одну итерацию?

Answer 1

У вас каждое действие - уникальное. Если бы все регулярные выражения были ради одного результата (например всё менять на точку) - тогда их можно было бы свести в одно выражение.

Вынесете форматирование строки в отдельный класс.

static class MyUtils{
        public static String normalizeString(String src){
            src = src.replace("\\s*,\\s*", ", ");
            src = src.replace("\\s*(?<!\\.)\\.(?!\\.)\\s*", ". ");
            src = src.replace("\\s*\\.{3}\\s*", "... ");
            src = src.replace("\\s*'\\s*", "'");
            return src;
        }
}

и пользуйтесь:

buffer=MyUtils.normalizeString(this);
READ ALSO
ArrayList, LinkedList и переключение с одного на другой

ArrayList, LinkedList и переключение с одного на другой

Прочитал в книге: На стадии планирования в программы вы можете выбрать список LinkedList, а потом, в процессе оптимизации, переключиться на ArrayListБлагодаря...

149
вытащить массив из файла JSON

вытащить массив из файла JSON

Всем привет) Помогите разобратьсяЕсть такой JSON файл:

149
Переход к активности по нажатию кнопок в уведомлении

Переход к активности по нажатию кнопок в уведомлении

В уведомлении присутствуют 3 кнопкиПо нажатию каждой из них должна открываться активность и выполняться определенное действие

134