当前位置: 代码迷 >> J2SE >> 求个java算法解决方法
  详细解决方案

求个java算法解决方法

热度:184   发布时间:2016-04-23 20:30:29.0
求个java算法
我现在有一个字符串 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);
}
}
  相关解决方案