Как заменить заданную подстроку на «» из заданной строки?

#java #liferay

#java #liferay

Вопрос:

Я просмотрел пару примеров, чтобы заменить заданную подстроку из заданной строки, "" но не смог добиться результата. Строка слишком длинная для публикации, и она содержит подстроку, которая выглядит следующим образом:-

 /image/journal/article?img_id=24810amp;amp;t=1475128689597
  

Я хочу заменить эту подстроку на «».Здесь значение img_id и t может меняться, поэтому мне придется использовать регулярное выражение. Я попытался со следующим кодом:-

 String regex="^/image/journal/article?img_id=([0-9])*amp;amp;t=([0-9])*$";
content=content.replace(regex,"");
  

Здесь содержимое — это исходная заданная строка. Но этот код на самом деле не заменяет ничего из content . Поэтому, пожалуйста, помогите .. любая помощь будет оценена . заранее спасибо.

Комментарии:

1. 1. Вам, вероятно, не нужно регулярное выражение. 2. replace() не принимает регулярное выражение в качестве входных данных

2. Вы можете попробовать использовать .replaceAll метод… Но я рекомендую вам использовать класс Pattern для компиляции вашего регулярного выражения и вызывать методы этого класса для обработки ваших выражений.

3. Мне нужно регулярное выражение .. пожалуйста, укажите, как его использовать.

4. Вы использовали ^ $ маркеры и, но говорите, что это подстрока , которую вы сопоставляете. Изучите семантику регулярных выражений, прежде чем использовать их.

5. Я не говорю, что регулярное выражение является подстрокой. подстрокой является «/image/journal/article?img_id=24810amp;amp; t =1475128689597″…

Ответ №1:

Использование replaceAll хорошо работает с регулярным выражением

 content=content.replaceAll("[0-9]*","");
  

Код

 String content="/image/journal/article?img_id=24810amp;amp;t=1475128689597";
content=content.replaceAll("[0-9]*","");
System.out.println(content);
  

Вывод :

 /image/journal/article?img_id=amp;amp;t=
  

Обновление: простое, может быть немного менее удобным, но простым

     String content="sas/image/journal/article?img_id=24810amp;amp;t=1475128689597";
    content=content.replaceAll("\/image.*","");
    System.out.println(content);
  

Вывод:

 sas
  

Если после есть что-то еще t=1475128689597/?tag=343sdds , и вы хотите сохранить ?tag=343sdds , используйте ниже

     String content="sas/image/journal/article?img_id=24810amp;amp;t=1475128689597/?tag=343sdds";
    content=content.replaceAll("(\/image.*[0-9] [\/])","");
    System.out.println(content);
    }
  

Вывод:

 sas?tag=343sdds
  

Комментарии:

1. OP хочет удалить всю /image... подстроку из строки большего размера, которую он не опубликовал, а не только переменные части.

2. @MarkoTopolnik ой, я подумал кое-что еще, позвольте мне отредактировать свой ответ. спасибо, чувак

Ответ №2:

Если вы пытаетесь заменить подстроку URL двумя цитатами, например:

/image/journal/article?img_id=""amp;amp;t=""

Затем вам нужно добавить экранированные кавычки "" внутри вашего назначения содержимого, отредактировать ваше регулярное выражение, чтобы искать только числа, и изменить его на replaceAll:

 content=content.replaceAll(regex,"""");
  

Ответ №3:

Вы можете использовать утилиту регулярных выражений Java для замены вашей строки на "" или (любой желаемый строковый литерал) на основе заданного шаблона (регулярного выражения) следующим образом:

 String content = "ALPHA_/image/journal/article?img_id=24810amp;amp;t=1475128689597_BRAVO";
String regex = "\/image\/journal\/article\?img_id=\d amp;amp;t=\d ";
Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(content);
if (matcher.find()) {
    String replacement = matcher.replaceAll("PK");
    System.out.println(replacement); // Will print ALPHA_PK_BRAVO
}