日期:2014-05-20  浏览次数:20766 次

求抱腿,字符串解析

content = "COUNT(<a billid=\"9160150\">A</a>,<a billid=\"9160151\">B</a>,<a billid=\"9160152\">C</a>)" ;

如何解析上面的字符串,得到{"9160150","9160151","9160152"},有哪些方法可以使用呢?求思路,求代码
(我知道一个笨方法:用","拆分字符串,然后用String的indexof() 和lastindexof()这两个方法可以实现查找,但是感觉很笨,效率太低)。

------解决方案--------------------
使用正则表达式是比较靠谱的思路,实例代码如下,能够找出所有的7位数字,如果要求更严格需要更改正则表达式
Java code

public static List<Integer> getStr(){
        List<Integer> strList=new ArrayList<Integer>();
        String content = "COUNT(<a billid=\"9160150\">A</a>,<a billid=\"9160151\">B</a>,<a billid=\"9160152\">C</a>)" ;
        Pattern p=Pattern.compile("\\d{7}");
        Matcher m=p.matcher(content);
        while(m.find()){
            String tmp=m.group();
            System.out.println(""+tmp);
            Integer i=Integer.parseInt(tmp);
            strList.add(i);
        }

        return  strList;
    }

------解决方案--------------------
for example
Java code
List<String> list = new ArrayList<String>();
String str = "COUNT(<a billid=\"9160150\">A</a>,<a billid=\"9160151\">B</a>,<a billid=\"9160152\">C</a>)" ;
Matcher m=Pattern.compile("(?i)billid=\"(\\d+)\"").matcher(str);
while(m.find()){
    System.out.println(m.group(1));
    list.add(m.group(1));
}
String[] arr = list.toArray(new String[0]);