我感覺很傻,我無法弄清楚這一點,但它真的開始讓我失望。Java正則表達式快速
我只是試圖確保字符串只包含使用string.match(regex)
的數字。如果它包含任何非數字字符,請將其硬編碼爲9999999.
這是我的代碼。我基本上檢查,看看我從ResultSet
moduleResult結果中包含的結果是否包含沒有非數字字符,然後使用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()的使用。 @TyC,您使用它的方式沒有效果,因爲您沒有將'trim()'的結果賦值給變量:'strEndPointID = strEndPointID.trim();' –