diff --git a/CHANGELOG.md b/CHANGELOG.md index ecf7972c5..f149a2aa2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ * 【core 】 修复FileTypeUtil判断wps修改过的xlsx误判为jar的问题(pr#380@Gitee) * 【core 】 修复Sftp.isDir异常bug(pr#378@Gitee) * 【core 】 修复BeanUtil.copyProperties集合元素复制成功,读取失败的问题(issue#I41WKP@Gitee) +* 【core 】 修复NumberChineseFormatter.chineseToNumber十位数错误(issue#1726@Gitee) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java b/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java index ad519a68e..729682d1d 100644 --- a/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java @@ -249,7 +249,14 @@ public class NumberChineseFormatter { section = 0; } else { // 非节单位,和单位前的单数字组合为值 - section += (number * unit.value); + int unitNumber = number; + if(0 == number && 0 == i){ + // issue#1726,对于单位开头的数组,默认赋予1 + // 十二 -> 一十二 + // 百二 -> 一百二 + unitNumber = 1; + } + section += (unitNumber * unit.value); } number = 0; } diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java index 21b5248ce..83c0abfc8 100644 --- a/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java @@ -116,6 +116,16 @@ public class NumberChineseFormatterTest { Assert.assertEquals(22010, NumberChineseFormatter.chineseToNumber("两万二零一十")); } + @Test + public void chineseToNumberTest3(){ + // issue#1726,对于单位开头的数组,默认赋予1 + // 十二 -> 一十二 + // 百二 -> 一百二 + Assert.assertEquals(12, NumberChineseFormatter.chineseToNumber("十二")); + Assert.assertEquals(120, NumberChineseFormatter.chineseToNumber("百二")); + Assert.assertEquals(1300, NumberChineseFormatter.chineseToNumber("千三")); + } + @Test(expected = IllegalArgumentException.class) public void badNumberTest(){ // 连续数字检查