从字符串里面匹配截取指定内容

来源:互联网 发布:ug编程 编辑:程序博客网 时间:2024/06/06 07:39

一、从字符串里面匹配截取指定内容

需求是这样的:从字符串"49.08(总行:28.0分行:60.0)"里面匹配提取出三个分值49.08、28.0、60.0

     这里总结了三种方法:

public class TestRegex {// 方法一public  String[] test1(String str){String[] split = str.replaceAll("([^0-9.])+", ",").split("\\,");return split;}//  方法二public  ArrayList<String> test2(String str){ArrayList<String> numarray = new ArrayList<>();String num = "";if(str != null && !"".equals(str)){for(int i=0;i<str.length();i++){if(str.charAt(i)>=48 && str.charAt(i)<=57||str.charAt(i)==46){num += str.charAt(i);}else{if(!num.isEmpty())numarray.add(num);num = "";}}}return numarray;}// 方法三public  List<String> test3(String str){  String pattern = "(\\d+\\.\\d+)(\\D*)(\\d+\\.\\d+)(\\D*)(\\d+\\.\\d+)";      // 创建 Pattern 对象      Pattern r = Pattern.compile(pattern);      List<String> list = new ArrayList<>();      // 现在创建 matcher 对象      Matcher m = r.matcher(str);      if (m.find( )) {        list.add(m.group(1));        list.add(m.group(3));        list.add(m.group(5));      } else {         System.out.println("NO MATCH");      }      return list;}@Testpublic void GG(){String str = "49.08(总行:28.0分行:60.0)";String [] split = test1(str);ArrayList<String> numarray = test2(str);List<String> list = test3(str);}



原创粉丝点击