I want to replace all the text within brackets to uppercase letters for any String
object. For example if the text is – Hi (abc), how (a)re (You)?"
, output should be – Hi ABC, how Are YOU?
. I tried to use StringUtils.SubstringBetween()
, but that replaces only the first substring between ()
.
Using regex
, I suppose the group()
method requires the count of such substrings. What is the correct direction to be taken?
Advertisement
Answer
Since Java 9 we can use Matcher.replaceAll​(Function<MatchResult,String> replacer)
String str = "Hi (abc), how (a)re (You)?"; Pattern p = Pattern.compile("\((.*?)\)"); //matches parenthesis and places //content between them in group 1 String replaced = p.matcher(str) .replaceAll(match -> match.group(1).toUpperCase()); //replace each match with //content of its group 1 in its upper case System.out.println(replaced);
Output: Hi ABC, how Are YOU?