Browse Source

!68 修复 NumberUtil.isNumber 方法

Merge pull request !68 from jonzhang-3/v4-dev
Looly 6 years ago
parent
commit
3ff93c2914

+ 2 - 2
hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java

@@ -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"

+ 3 - 0
hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java

@@ -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