我现在有一个字符串 fasdfasdfasdfasj{[(aaaaaaaa)]}{[(ccccccccc)]}asdfasd
要求能吧 {[( )]} 中间的字符取出来,通过算法得到一个新的字符串最后在拼接会原来的字符串中形成
fasdfasdfasdfasjeeeeeeeeffffffffasdfasd
要求{[( )]} 被去掉
------解决方案--------------------
推荐一篇博文,传送门。
------解决方案--------------------
package demo;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Rex {
static final Pattern pattern = Pattern.compile("\\{\\[\\(.*?\\)\\]\\}");
public static void main(String[] args) {
String s = " fasdfasdfasdfasj{[(aaaaaaaa)]}{[(ccccccccc)]}asdfasd";
System.out.println(helper(s));
}
private static String helper (String s) {
Matcher m = pattern.matcher(s);
while (m.find()) {
String strHead = s.substring(0, m.start());
String strTail = s.substring(m.end(), s.length());
String subString = dealString(m.group());
s = strHead + subString + strTail;
m = pattern.matcher(s);
}
return s;
}
// 将{[(aaaa)]}替换为eeee
private static String dealString(String str) {
// 先去左右括号
str = str.substring(3);
str = str.substring(0, str.length() - 3);
// 每个字符做处理+4 a->e
char[] cs = new char[str.length()];
for (int i=0; i< str.length(); i++) {
char c = str.charAt(i);
cs[i] = (char) (c+4);
}
return new String(cs);
}
}