Java. Замена символов в строке / Replacing characters in string

Вот решил заняться изобретением очередного "велосипеда".
В классе String есть замечательный метод replaceAll(), который заменяет символы/подстроки в данной строке. Работает он отлично до тех пор, пока заменяемая строка не будет содержать специальных символов, входящих в семантику регулярных выражений. Вот тут и начинается фигня (с точки зрения человека, не знакомого с регулярными выражениями ) с заменой. А ведь замена подстроки в строке задача не такая уже и тяжелая и поддерживается в большинстве языков программирования.
Так вот, зачем этот пост. Этот пост для тех, у кого нет ни малейшего желания изучать регулярные выражения (regular expressions / regexp).
Вот пример аналогичной функции, своего шестиколесного велосипеда, выполняющего аналогичные функции, но абсолютно не понимающего регулярных выражений. То есть, если вы попросите его заменить подстроку "[][/23x1]" или еще какую-нибудь хитрую подстроку в строке, то она заменит именно эти вхождения в строку, а не будет вычислять "[][/23x1]", пытаясь найти в нем какой-то паттерн.
Вот, собственно, и код:
Протестировал и вроде она работает.
Если у вас есть другие варианты решения проблемы - поделитесь.
Обновление:
В комментариях было предложено использовать StringUtils из комплекта apache commons.
Моим решением следует пренебречь.
Вот сигнатура метода из документации:
replace
public static String replace(String text, String searchString, String replacement)
-
Replaces all occurrences of a String within another String.
A
nullreference passed to this method is a no-op.StringUtils.replace(null, *, *) = null StringUtils.replace("", *, *) = "" StringUtils.replace("any", null, *) = "any" StringUtils.replace("any", *, null) = "any" StringUtils.replace("any", "", *) = "any" StringUtils.replace("aba", "a", null) = "aba" StringUtils.replace("aba", "a", "") = "b" StringUtils.replace("aba", "a", "z") = "zbz" - Parameters:
text- text to search and replace in, may be nullsearchString- the String to search for, may be nullreplacement- the String to replace it with, may be null- Returns:
- the text with any replacements processed,
nullif null String input - See Also:
replace(String text, String searchString, String replacement, int max)
Материалы, которые могут вас заинтересовать
- Вопрос: Восходящее преобразование и generic
- Играем в компилятор.
- Аргументы методов в Java : pass-by-value or pass-by-reference
- Все о String.intern()
- Java. Как создать объект обобщенного типа? How is a generic type instantiated?
- Java. Что такое параметризированный или обобщенный тип? / What is a parameterized or generic type?
- Java. Что такое дженерики? / What is Java Generics?
- Java. Как получить путь к проекту? / How to get project path?
- Core java. Примеры, в которых зарыта собака







http://commons.apache.org/lang/api-release/org/apache/commons/lang/Strin...
Отличное решение! Про apache commons совсем забыл :).
Велосипед отменяется :)
А я тоже раньше думал, что replaceAll(), заменяет все вхождения подстроки, а replace(), только первое, ан нет, это тоже самое только без регулярок, так что не к чему тут лесопеды.
А чем вас не устраивает метод replace описанный в классе String?
>А чем вас не устраивает метод replace описанный в классе String
Наверное тем, что он заменяет не строки а только отдельные символы
Отправить комментарий