Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 模式匹配器Android拆分字符串_Java_Android_Pattern Matching - Fatal编程技术网

Java 模式匹配器Android拆分字符串

Java 模式匹配器Android拆分字符串,java,android,pattern-matching,Java,Android,Pattern Matching,问题陈述:我想在后台阅读USSD代码,并想获取一些值: 例如 您的剩余数据余额为400 MB,有效期为2017年4月20日。(需要提取“400 MB”) 您的剩余数据余额为0.04 GB,有效期为2017年4月20日。(我需要提取0.04 GB) 等等 我该怎么办?谁能帮忙吗。如何进行这些类型的拆分我不确定您的爬虫程序是否获得了相同的msga信息,但可以确定您可以使用正则表达式来匹配所需的信息 String str = "Your data balance left is 400 MB, val

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

例如

  • 您的剩余数据余额为400 MB,有效期为2017年4月20日。(需要提取“400 MB”)
  • 您的剩余数据余额为0.04 GB,有效期为2017年4月20日。(我需要提取0.04 GB)
  • 等等


    我该怎么办?谁能帮忙吗。如何进行这些类型的拆分我不确定您的爬虫程序是否获得了相同的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]);
    }
    

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

     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);
    

    简单的解决方案

    如果您的“模式”匹配左is和('left is'和逗号),或者文本只是一个示例…?@ΦXocę웃Пepeúpaツ本文就是一个例子。任何字符串都可以,但我只想提取数据平衡