StringUtils.replaceEach используется для замены строк, альтернатива replaceEach для регулярных выражений.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 StringUtils.replaceEach используется для замены строк, альтернатива replaceEach для регулярных выражений.

Сообщение Anonymous »


String str = "демо-тест временного теста демо-тест"; Map regexMap = new LinkedHashMap(); regexMap.put("te.t", демо); regexMap.put("de.o", Rampage); вывод: temp demo Rampage demo Ramage. Если существует список регулярных выражений, которые необходимо применить к одной строке, как мы можем этого добиться? Есть ли какой-нибудь API, который будет работать именно с регулярными выражениями, как StringUtils.replaceEach() работает со строками?

Что можно улучшить в этом коде?
String replaceFixedSubString(Map regexPatternVsValueMap, String AttributeValue) { Map groupVsPatternMap = new HashMap(); StringBuilder FinalValue = новый StringBuilder(); Строка regexJoinOr = Strings.join(regexPatternVsValueMap.keySet(), "|"); Шаблон скомпилированPattern = Pattern.compile(regexJoinOr); Сопоставитель = компиляторPattern.matcher(attributeValue); в то время как (matcher.find()) { Строковый ключ = keyResolution(regexPatternVsValueMap.keySet(), matcher.group(), groupVsPatternMap); Строковое значение = regexPatternVsValueMap.get(key); matcher.appendReplacement(finalValue, Matcher.quoteReplacement(value == null ? "" : value)); } matcher.appendTail(finalValue); вернуть FinalValue.toString(); } Private String keyResolution (Set keySet, String group, Map groupVsPatternMap) { Строка factKey = groupVsPatternMap.getOrDefault(группа, группа); если (actualKey.equals(группа)) { for (Строковый ключ: keySet) { if (key.length() == group.length()) { если (key.startsWith(String.valueOf(group.charAt(0))) && key.endsWith(String.valueOf(group.charAt(group.length() - 1)))) { фактический ключ = ключ; перерыв; } } } groupVsPatternMap.put(группа, factKey); } вернуть фактический ключ; } общественный недействительный AlphaNumericRegexTest () { System.out.println("Алфавитно-цифровое регулярное выражение запущено"); Map charVsCharCorpusList = новый HashMap(); charVsCharCorpusList.put("[^0-9a-zA-Z]+", ""); charVsCharCorpusList.put("d..o", "модем"); charVsCharCorpusList.put("м...м", "современный"); String atrValue = "!#$A%m^a&z./on 123 demo! модем"; Строка StandardizeValue = replaceFixedSubString(charVsCharCorpusList, atrValue.toLowerCase()); Ожидаемый результат строки = "amazon123modemmodern"; Assert.assertEquals(expectedResult,standardizeValue); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»