From c86fd91e723fafc8a971b320733531ca9160c4dc Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 28 Aug 2019 10:16:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DNumberUtil.isNumber=20?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E8=AF=86=E5=88=AB=20+11=EF=BC=8C0X22?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java | 4 ++-- .../src/test/java/cn/hutool/core/util/NumberUtilTest.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java index 084ddb622..edaa6b7af 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java +++ b/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" diff --git a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java index e9ea70faa..4622f9eaa 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java +++ b/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