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»