1

複数のセンサーからデータを収集する Java サーバーを開発しています。これらのセンサーは通常、クエリされた値を文字列値として返します。ヘッダーには、サーバーが受信した値をキャストするために使用する必要があるデータ型が示されています。これらの値は、integer、boolean、double、float、long のいずれかです。

センサーが値の「データ型の説明」を提供しない場合があるため、受信した文字列を分析してデータ型を理解する方法を見つけたいと考えています。

私はREGEXを使用することを考えていましたが、もっとうまくやる方法が他にもあるかもしれません。なにか提案を?

4

3 に答える 3

2

これを行うには、いくつかの方法があります。1つは、適切な順序で異なる標準Javaタイプによって値を解析しようとすることです。

Boolean.parseBoolean(s)
Integer.parseInteger(s)
Long.parseLong(s)
... 
(and so on)

そして、すべてのステップで例外をキャッチします 2 番目のアプローチ - Apache コモンズ ライブラリを使用します。

BooleanUtils.isBoolean(s)    
StringUtils.IsNumeric(s)
StringUtils.IsAlpha(s)
于 2012-11-09T19:20:03.447 に答える
1

責任のデータ検証チェーンを作成します。各要素は、最も制限の厳しいタイプから最も制限の少ないタイプに順序付けられた入力データをキャストしようとします。

boolean
integer
long
float
double
String

データの解析に失敗した場合、チェーンはそれを次のパーサーに伝達し、すべてが失敗した場合は、例外をスローするか、文字列として使用します。

于 2012-11-09T19:11:35.260 に答える