我感觉很傻,我无法弄清楚这一点,但它真的开始让我失望。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();' –