#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
}