I have a string like
a#?.text1
I have two other strings like c#1.text2 and d#2.text3
I want to replace #? in a#?.text1 with a#1.text1 if I choose c#1.text2. If I choose d#2.text3, then I want to replace a#?.text1 with a#2.text1. What is the easiest way to do this? I came up with a solution using groups, but my team doesn't think it is an efficient way of doing it. Here's my Java code:
Pattern strPattern = Pattern.compile("(\\w+)(#\\?)(\\.\\w+)");
Pattern replacePattern = Pattern.compile("(\\w+)(#\\d+)(\\.\\w+)");
Matcher strMatcher = strPattern.matcher("a#?.text1");
Matcher replaceMatcher1 = replacePattern.matcher("c#1.text2");
Matcher replaceMatcher2 = replacePattern.matcher("d#2.text3");
if(strMatcher.matches() && replaceMatcher1.matches()) {
String number = replaceMatcher1.group(2);
return strMatcher.replaceAll(strMatcher.group(1) + number + strMatcher.group(3));
} else if(strMatcher.matches() && replaceMatcher2.matches()) {
String number = replaceMatcher2.group(2);
return strMatcher.replaceAll(strMatcher.group(1) + number + strMatcher.group(3));
}
The feedback I got was that groups are inefficient and I have to find an easier way to do this.
Is there a better way to do this?