字符串去除嵌套括号内容

来源:互联网 发布:mina一次接收数据不全 编辑:程序博客网 时间:2024/04/29 00:20

字符串去除嵌套括号内容

项目遇到了此类处理的问题,没搜到解决的办法,就自己写了点代码解决。

  • Linklist解决
  • 正则表达式解决(推荐此种方法解决)

Linklist解决

-做项目需要对数据库的一个字段进行去括号处理,没有查到相关方法,就自己实现了这个功能,特此记一下。就利用Linklist操作,类似于入栈出栈,入栈时遇到‘)’时停止入栈,开始从尾部删除数据,当删到‘(’时停止删除,又开始入栈,循环对字符进行校验是否为‘(’、‘)’,以便进行下一步操作,直到字符串全部入栈。以下是源代码:

 public class test {    public static void main(String[] args) {        String dsr = "中国(合肥(安庆)蜀山)高校(jiaoyu)基地";        char[] dsrchar = dsr.toCharArray();        LinkedList dsrlist = new LinkedList<String>();        for (int i = 0; i < dsrchar.length;) {            if (dsrchar[i] == ')') {                i++;                while ((char) dsrlist.getLast() != '(') {                    dsrlist.removeLast();                }                dsrlist.removeLast();            }            dsrlist.add(dsrchar[i]);            i++;        }        String dsrString = "";        List<String> arrayList = new ArrayList<String>(dsrlist);        String ssString = arrayList.toString();        ssString = ssString.replaceAll(",", "");        ssString = ssString.replaceAll("\\[", "");        ssString = ssString.replaceAll("\\]", "");        System.out.println(ssString);    }}

正则表达式解决

public class test1 {    public static void main(String[] args) {        String dsrcl = "中国(安徽(合肥)蜀山)高校(jiaoyu)基地";        while(dsrcl.contains("(")){        dsrcl = dsrcl.replaceAll("\\([^)(]*\\)","");        }        System.out.println(dsrcl);}}
原创粉丝点击