Как извлечь конкретную часть строки и заменить на то же извлеченное значение, но в другом случае - с помощью Java - PullRequest
0 голосов
/ 27 сентября 2018
  1. Мой ввод t% 60hiag% 2Fra% 2Cjan
  2. Я хочу, чтобы это было преобразовано в t% 60hiag% 2fra% 2cjan

Я бы хотел заменить% 2F на% 2f.т. е. любое число в диапазоне от 0 до 9, за которым следует алфавит в верхнем регистре от AF, следует преобразовать в алфавит в нижнем регистре.

Я смог извлечь и заменить общей строкой.Но мне нужна помощь в замене извлеченной строки на нижний регистр.

  private static String urlEncodeLowerCase(String stringInput)
  {
    stringInput = stringInput.replaceAll("%[0-9]{1}[A-F]{1}", "T");  
    return stringInput;
  }

Приведенный выше код извлечет и заменит извлеченную строку на "T", но я хочу что-то похожее

stringInput = stringInput.replaceAll("%[0-9]{1}[A-F]{1}", "%[0-9]{1}[A-Z]{1}".toLowerCase);  

Вышекод не будет работатьЭто просто, чтобы вы поняли мое требование.

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

попробуйте

private static String urlEncodeLowerCase(String stringInput) {
    Pattern pattern = Pattern.compile("%[0-9]{1}[A-Z]{1}");
    Matcher matcher = pattern.matcher(stringInput);
    while (matcher.find()) {
        String s = matcher.group();
        stringInput = stringInput.replace(s, s.toLowerCase());
    }
    return stringInput;
}
0 голосов
/ 27 сентября 2018

Вы можете использовать Matcher#appendReplacement.Согласно Java Matcher класс документов :

Методы appendReplacement и appendTail могут использоваться в тандемечтобы собрать результат в существующий строковый буфер

См. эту демонстрацию Java:

String s = "Some Text %0A";
Pattern p = Pattern.compile("%[0-9][A-Z]");
StringBuffer result = new StringBuffer();
Matcher m = p.matcher(s);
while (m.find()) {
    m.appendReplacement(result, m.group().toLowerCase());
}
m.appendTail(result);
System.out.println(result.toString());
// => Some Text %0a

Если вы хотите убедиться, что после заглавной буквы есть граница слова,используйте "%[0-9][A-Z]\\b" шаблон.

0 голосов
/ 27 сентября 2018

Вы должны использовать регулярное выражение, чтобы соответствовать частям строки, которую вы хотите изменить.После этого вы должны перебрать все совпадения и перестроить строку с преобразованием совпадающих частей и оставить без изменений все остальные.Посмотрите, как работают классы Pattern, Matcher и StringBuilder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...