修复NumberUtil.isNumber 不可识别 +11,0X22的情况

This commit is contained in:
Jon 2019-08-28 10:16:05 +08:00
parent 500be4aaba
commit c86fd91e72
2 changed files with 5 additions and 2 deletions

View File

@ -1059,9 +1059,9 @@ public class NumberUtil {
boolean allowSigns = false;
boolean foundDigit = false;
// deal with any possible sign up front
int start = (chars[0] == '-') ? 1 : 0;
int start = (chars[0] == '-' || chars[0] == '+') ? 1 : 0;
if (sz > start + 1) {
if (chars[start] == '0' && chars[start + 1] == 'x') {
if (chars[start] == '0' && (chars[start + 1] == 'x' || chars[start + 1] == 'X')) {
int i = start + 2;
if (i == sz) {
return false; // str == "0x"

View File

@ -66,6 +66,9 @@ public class NumberUtilTest {
public void isNumberTest() {
Assert.assertTrue(NumberUtil.isNumber("28.55"));
Assert.assertTrue(NumberUtil.isNumber("0"));
Assert.assertTrue(NumberUtil.isNumber("+100.10"));
Assert.assertTrue(NumberUtil.isNumber("-22.022"));
Assert.assertTrue(NumberUtil.isNumber("0X22"));
}
@Test