Есть небольшая програма по форматированию строки с использованием регулярного выражения. В коде присутствует множесвенное использование функции 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) Есть ли относительно простой способ замены символов в одну итерацию?
У вас каждое действие - уникальное. Если бы все регулярные выражения были ради одного результата (например всё менять на точку) - тогда их можно было бы свести в одно выражение.
Вынесете форматирование строки в отдельный класс.
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);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Прочитал в книге: На стадии планирования в программы вы можете выбрать список LinkedList, а потом, в процессе оптимизации, переключиться на ArrayListБлагодаря...
В уведомлении присутствуют 3 кнопкиПо нажатию каждой из них должна открываться активность и выполняться определенное действие