Azimuth:133.9:x:0.109:y:-0.168:z:-0.958
こういう文字列を送ると
9:y:-0.168:z:-0.958
こうなって来ることがある.
よくわからないから,if文に正規表現を使って欠損データを除外しようと思って,以下のように書いてみた.
String inputLine = br.readLine();
String comp = "Azimuth:\\d{1,3}.\\d:x:-?\\d.\\d{1,3}:y:-?\\d.\\d{1,3}:z:-?\\d.\\d{1,3}";
if(inputLine.equals(comp)) {
中略
}
String comp = "Azimuth:\\d{1,3}.\\d:x:-?\\d.\\d{1,3}:y:-?\\d.\\d{1,3}:z:-?\\d.\\d{1,3}";
if(inputLine.equals(comp)) {
中略
}
しかし,正しいデータが来てるのにどうしても真にならない.
小一時間色々試して悩んでいたら,以下のサイトを見つけた.
正規表現の利用方法
するとなんだかよくわからんが,PatternとMatcherを使うといいらしい…
とりあえず書き直してみる.
String inputLine = br.readLine();
String comp = "Azimuth:\\d{1,3}.\\d:x:-?\\d.\\d{1,3}:y:-?\\d.\\d{1,3}:z:-?\\d.\\d{1,3}";
Pattern p = Pattern.compile(comp);
Matcher m = p.matcher(inputLine);
if(m.find()) {
中略
}
String comp = "Azimuth:\\d{1,3}.\\d:x:-?\\d.\\d{1,3}:y:-?\\d.\\d{1,3}:z:-?\\d.\\d{1,3}";
Pattern p = Pattern.compile(comp);
Matcher m = p.matcher(inputLine);
if(m.find()) {
中略
}
なんとかこれで通りました(笑)
なんで直接比較したらダメなんだろ??