私はこれを理解することができないと愚かな気がしますが、本当に私を怒らせるようになっています。Java Regex quickie
文字列にstring.match(regex)
を使用していることを確認するだけです。数値以外の文字が含まれている場合は、9999999にハードコードしてください。
ここに私のコードです。私は本質的に、ResultSet
moduleResultsから取得した結果が数字以外の文字を含んでいないかどうかをチェックしてから、setEndPointID
を使用して、パラメータとしてlongを受け入れるかどうかを確認しています。 trim()
はそこにあります。id_amr_module
にスペースが入ることが多く、正規表現の試合を捨てないようにしたいからです。私も正規表現[0-9] *を試してみました。
String strEndPointID = moduleResults.getString("id_amr_module");
strEndPointID.trim();
if(strEndPointID.matches("\\d*")){
msiRF.setEndpointID(moduleResults.getLong("id_amr_module"));
}
else{
long lngEndPointID = 99999999;
msiRF.setEndpointID(lngEndPointID);
}
String.matches()の最後に到達するまで、アンカーを必要としません。 –
あなたは正しいです。 'String#matches()'をどのくらいの頻度で使用するかを示すために移動します。私はOPが欠けていた唯一のものは '*'の代わりに '+'だったと思います。 –
+1もOPの 'trim()'の使用を修正するために+1します。 @TyC、あなたが 'trim()'の結果を変数に代入しなかったので、あなたが使った方法は効果がありませんでした: 'strEndPointID = strEndPointID.trim();' –