如何在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
答案 0 :(得分:1)
我找到了解决方案,有代码(对某人有用):
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;
}
}
答案 1 :(得分:-2)
正则表达式几乎肯定是你想要的,是的是令人生畏但你会一遍又一遍地使用它。 RMK部分将是最难的,它是最自由的形式。唯一的选择是逐个字符地使用很多if或case语句。
答案 2 :(得分:-2)
这看起来很有前途,我用谷歌搜索java METAR解析:-) http://jfall-javafx.googlecode.com/svn-history/r6/WeatherFX/src/com/feldt/metar/Metar.java