java - METAR 报告 - 解析为 Java

标签 java android parsing text

如何在 Java 编程中解析 Metar 信息? 我在互联网上搜索过,有很多复杂的东西,我想要更简单的东西。 我不知道如何使用正则表达式或类似的东西......

Metar 信息示例:http://weather.noaa.gov/pub/data/observations/metar/stations/ABBN.TXT

2011/03/16 05:30 ABBN 160530Z 23004KT 9999 NSC 02/M05 Q1029 R14R/CLRD60 NOSIG RMK G/O QFE696

请注意,Metar 报告可能有变化: http://en.wikipedia.org/wiki/METAR

最佳答案

我找到了一个解决方案,有代码(它对某人可能有用):

    for (int i=0; i<httpGet.length(); i++) {  

           char c = httpGet.charAt(i);

           if(c=='M' && Character.isDigit(httpGet.charAt(i+1)) && 
                   Character.isDigit(httpGet.charAt(i+2)) &&
                   httpGet.charAt(i+3)== '/' &&
                   Character.isDigit(httpGet.charAt(i+4))&&
                   Character.isDigit(httpGet.charAt(i+5))&&
                   httpGet.charAt(i+6)==' ' &&
                   Character.isLetter(httpGet.charAt(i+7))){

               temp="-"+httpGet.substring(i+1,i+3);
               dewP=httpGet.substring(i+4,i+6);
               break;
           }

           else if(c=='M' && Character.isDigit(httpGet.charAt(i+1)) && 
                   Character.isDigit(httpGet.charAt(i+2)) &&
                   httpGet.charAt(i+3)== '/' &&
                   httpGet.charAt(i+4)== 'M' &&
                   Character.isDigit(httpGet.charAt(i+5))&&
                   Character.isDigit(httpGet.charAt(i+6))&&
                   httpGet.charAt(i+7)==' ' &&
                   Character.isLetter(httpGet.charAt(i+8))){

               temp="-"+httpGet.substring(i+1,i+3);
               dewP="-"+httpGet.substring(i+5,i+7);
               break;
           }

           else if(Character.isDigit(httpGet.charAt(i)) && 
                   Character.isDigit(httpGet.charAt(i+1)) &&
                   httpGet.charAt(i+2)== '/' &&
                   httpGet.charAt(i+3)== 'M' &&
                   Character.isDigit(httpGet.charAt(i+4))&&
                   Character.isDigit(httpGet.charAt(i+5))&&
                   httpGet.charAt(i+6)==' ' &&
                   Character.isLetter(httpGet.charAt(i+7))){

               temp=httpGet.substring(i,i+2);
               dewP="-"+httpGet.substring(i+4,i+6);
               break;
           }
           else if(Character.isDigit(c) && Character.isDigit(httpGet.charAt(i+1))
                   && httpGet.charAt(i+2)=='/' &&
                   Character.isDigit(httpGet.charAt(i+3)) &&  
                   Character.isDigit(httpGet.charAt(i+4)) &&
                   httpGet.charAt(i+5)==' ' &&
                   Character.isLetter(httpGet.charAt(i+6))){

                temp=httpGet.substring(i,i+2);
                dewP=httpGet.substring(i+3,i+5);
                break;
           }
    }

关于java - METAR 报告 - 解析为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16192991/

相关文章:

javascript - android系统: Transformer Prime上的 "touchmove"事件

Java 方法调用解析器?

java - 在 Tomcat 中重新部署应用程序时发生内存泄漏

java - java中最终局部变量的范围

android - SharedPreferences 保存按钮更改后不可见单击它并让出现另一个按钮

java - 从微调器中提取值并将其用于计算 - NullPointerException

php - PHP 中相关值的 HTML 解析

python - 在Python中将 '**'替换为 'math.pow'

java - 即使服务器停机,每 2 个月在第一天安排一个进程的最佳方法

java - 修复 JComboBox 宽度