У меня есть некоторый код, который я преобразовываю от Perl до Java. Это делает довольно интенсивное использование регулярных выражений, включая s///
оператор. Я использовал Perl в течение долгого времени, и все еще привыкаю к Java способ сделать вещи. В частности, Строки кажутся более трудными работать с. Делает любой знает об или имеет функцию Java, которая полностью реализует s///
? Так, чтобы это могло обработать что-то вроде этого, например:
$newString =~ s/(\bi'?\b)/\U$1/g;
(Возможно, не яркий пример, но Вы получаете идею.) Спасибо.
Рассмотрите метод replaceAll(...) String. Обратите внимание, что Java не поддерживает функцию \U
(верхний регистр).
Ничего такого аккуратного, но в Java вы должны использовать String.replaceAll () или использовать Pattern для выполнения что-то вроде:
Pattern p = Pattern.compile("(\bi'?\b)");
Matcher m = p.matcher(stringToReplace);
m.replaceAll("$1");
Проверьте в документации по шаблону синтаксис регулярных выражений Java - он не полностью перекрывается с Perl.
Чтобы получить верхний регистр, ознакомьтесь с Matcher.appendReplacement
:
StringBuffer sb = new StringBuffer();
while (m.find()) {
String uppercaseGroup = m.group(1).toUpperCase();
m.appendReplacement(sb, uppercaseGroup);
}
m.appendTail();
Не так близко к Perl, как упомянутая выше библиотека jakarta-oro, но определенно некоторая помощь встроена в библиотеку.
Получив экземпляр класса String, вы можете использовать метод .replaceAll() следующим образом:
String A = "Test";
A.replaceAll("(\bi'?\b)","\U$1");
Edit - ok too slow. Также, очевидно, \U не поддерживается, согласно другому ответу.
Примечание - я не уверен, как переводится символ жадности, вы можете попробовать поискать реализацию в Java, если вам это нужно.