From fae914cf48e4642b9d514d9a39d84b72dd890ee3 Mon Sep 17 00:00:00 2001 From: looly Date: Sun, 12 Dec 2021 12:09:35 +0800 Subject: [PATCH] fix bug --- CHANGELOG.md | 3 ++- .../cn/hutool/core/text/CharSequenceUtil.java | 5 ++++ .../java/cn/hutool/core/util/XmlUtil.java | 26 ++++++++++++------- .../core/text/CharSequenceUtilTest.java | 8 ++++++ 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d30a07b7..78c81369a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ ### 🐣新特性 ### 🐞Bug修复 * 【core 】 LineReadWatcher#onModify文件清空判断问题(issue#2013@Github) -* 【core 】 修复4位bytes转换float问题(issue#I4M0E4@Github) +* 【core 】 修复4位bytes转换float问题(issue#I4M0E4@Gitee) +* 【core 】 修复CharSequenceUtil.replace问题(issue#I4M16G@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.7.17 (2021-12-09) diff --git a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java index 595a61d69..660989242 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java @@ -3538,6 +3538,11 @@ public class CharSequenceUtil { final int strLength = str.length(); final int searchStrLength = searchStr.length(); + if(strLength < searchStrLength){ + // issue#I4M16G@Gitee + return str(str); + } + if (fromIndex > strLength) { return str(str); } else if (fromIndex < 0) { diff --git a/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java index e35d51852..55f3130bb 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java @@ -1499,20 +1499,26 @@ public class XmlUtil { */ private void examineNode(Node node, boolean attributesOnly) { final NamedNodeMap attributes = node.getAttributes(); - final int length = attributes.getLength(); - for (int i = 0; i < length; i++) { - Node attribute = attributes.item(i); - storeAttribute(attribute); + //noinspection ConstantConditions + if (null != attributes) { + final int length = attributes.getLength(); + for (int i = 0; i < length; i++) { + Node attribute = attributes.item(i); + storeAttribute(attribute); + } } if (false == attributesOnly) { final NodeList childNodes = node.getChildNodes(); - Node item; - final int childLength = childNodes.getLength(); - for (int i = 0; i < childLength; i++) { - item = childNodes.item(i); - if (item.getNodeType() == Node.ELEMENT_NODE) - examineNode(item, false); + //noinspection ConstantConditions + if(null != childNodes){ + Node item; + final int childLength = childNodes.getLength(); + for (int i = 0; i < childLength; i++) { + item = childNodes.item(i); + if (item.getNodeType() == Node.ELEMENT_NODE) + examineNode(item, false); + } } } } diff --git a/hutool-core/src/test/java/cn/hutool/core/text/CharSequenceUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/text/CharSequenceUtilTest.java index 83c9179ac..38894581f 100644 --- a/hutool-core/src/test/java/cn/hutool/core/text/CharSequenceUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/text/CharSequenceUtilTest.java @@ -14,6 +14,14 @@ public class CharSequenceUtilTest { Assert.assertEquals("SSMBeryAllen", actual); } + @Test + public void replaceTest2(){ + // https://gitee.com/dromara/hutool/issues/I4M16G + String replace = "#{A}"; + String result = CharSequenceUtil.replace(replace, "#{AAAAAAA}", "1"); + Assert.assertEquals(replace, result); + } + @Test public void addPrefixIfNotTest(){ String str = "hutool";