模式匹配器Android拆分字符串

时间:2017-03-31 07:11:25

标签: java android pattern-matching

问题陈述:我想在后台阅读USSD代码并想要获取一些值:

E.g

  1. 您剩余的数据余额为400 MB,有效期为2017年4月20日。(需要提取' 400 MB')
  2. 您剩余的数据余额为0.04 GB,有效期为2017年4月20日。(我需要提取0.04 GB)
  3. 依旧......

    我该怎么办?谁能请帮忙。我该怎么做这些类型的拆分

2 个答案:

答案 0 :(得分:0)

我不确定您的抓取工具是否正在使用相同的信息msga,但您肯定可以使用正则表达式来匹配您需要的信息...

String str = "Your data balance left is 400 MB, validity is 20 APR 2017. (need to extract '400 MB')\n"
            + "Your data balance left is 0.04 GB, validity is 20 APR 2017. (I need to extract 0.04 GB)";

Matcher myMatcher = Pattern.compile(Pattern.quote("left is") + "(.*?)" + Pattern.quote(", validity is"))
            .matcher(str);
while (myMatcher.find()) {
     String result = myMatcher.group(1).trim();
     String[] spltter = result.split(" ");
     System.out.println("result: " + result);
     System.out.println("value: " + spltter[0]);
     System.out.println("result: " + spltter[1]);
}

答案 1 :(得分:0)

这是一个提取您正在寻找的解决方案,它不需要任何模式匹配器类

 private String ussdString = "Your data balance left is 400 MB, validity is 20 APR 2017";
 String[] stringArray = ussdString.split(",");
        String ussdStringData = stringArray[0];
        ussdStringData = ussdStringData.replace("Your data balance left is ", "");
        System.out.println("Data is " + ussdStringData);

简单的解决方案