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 6381187bb..91db57c57 100755 --- a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java @@ -1810,8 +1810,21 @@ public class CharSequenceUtil extends StrChecker { * @param length 要截取的长度 * @return 截取后的字符串 */ - public static String subWithLength(final String input, final int fromIndex, final int length) { - return sub(input, fromIndex, fromIndex + length); + public static String subByLength(final String input, final int fromIndex, final int length) { + if (isEmpty(input)) { + return null; + } + if (length <= 0) { + return EMPTY; + } + + final int toIndex; + if(fromIndex < 0){ + toIndex = fromIndex - length; + }else{ + toIndex = fromIndex + length; + } + return sub(input, fromIndex, toIndex); } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/tree/TreeBuilder.java b/hutool-core/src/main/java/cn/hutool/core/tree/TreeBuilder.java index 7d883e9e9..a9b782247 100644 --- a/hutool-core/src/main/java/cn/hutool/core/tree/TreeBuilder.java +++ b/hutool-core/src/main/java/cn/hutool/core/tree/TreeBuilder.java @@ -1,13 +1,12 @@ package cn.hutool.core.tree; -import cn.hutool.core.lang.builder.Builder; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.core.tree.parser.NodeParser; +import cn.hutool.core.lang.builder.Builder; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.tree.parser.NodeParser; import cn.hutool.core.util.ObjUtil; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -56,7 +55,7 @@ public class TreeBuilder implements Builder> { public TreeBuilder(final E rootId, final TreeNodeConfig config) { root = new MapTree<>(config); root.setId(rootId); - this.idTreeMap = new HashMap<>(); + this.idTreeMap = new LinkedHashMap<>(); } /** 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 48a525bc2..871749645 100755 --- a/hutool-core/src/test/java/cn/hutool/core/text/CharSequenceUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/text/CharSequenceUtilTest.java @@ -212,4 +212,10 @@ public class CharSequenceUtilTest { final String result = StrUtil.replaceFirst(str, "YES", "", true); Assert.assertEquals(result, " and yes i do"); } + + @Test + public void issueI5YN49Test() { + final String str = "A5E6005700000000000000000000000000000000000000090D0100000000000001003830"; + Assert.assertEquals("38", StrUtil.subByLength(str,-2,2)); + } } diff --git a/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java index 3d78669cd..2c96ed6f4 100644 --- a/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java @@ -240,4 +240,11 @@ public class HttpRequestTest { final HttpRequest a = HttpRequest.post("https://hutool.cn/").form("a", 1); Console.log(a.toString()); } + + @Test + @Ignore + public void issueI5Y68WTest() { + final HttpResponse httpResponse = HttpRequest.get("http://82.157.17.173:8100/app/getAddress").execute(); + Console.log(httpResponse.body()); + } }