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 ffd27977f..e217b9f09 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 @@ -1741,6 +1741,15 @@ public class CharSequenceUtil extends StrChecker { /** * 切割指定位置之前部分的字符串 + *
安全的subString,允许:string为null,允许string长度小于toIndexExclude长度
+ *+ * Assert.assertEquals(StrUtil.subPre(null, 3), null); + * Assert.assertEquals(StrUtil.subPre("ab", 3), "ab"); + * Assert.assertEquals(StrUtil.subPre("abc", 3), "abc"); + * Assert.assertEquals(StrUtil.subPre("abcd", 3), "abc"); + * Assert.assertEquals(StrUtil.subPre("abcd", -3), "a"); + * Assert.assertEquals(StrUtil.subPre("ab", 3), "ab"); + ** * @param string 字符串 * @param toIndexExclude 切割到的位置(不包括) diff --git a/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java index 0e868f6ce..7f380e5b7 100644 --- a/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java @@ -280,6 +280,16 @@ public class StrUtilTest { Assert.assertEquals("ghigh", pre); } + @Test + public void subPreTest() { + Assert.assertEquals(StrUtil.subPre(null, 3), null); + Assert.assertEquals(StrUtil.subPre("ab", 3), "ab"); + Assert.assertEquals(StrUtil.subPre("abc", 3), "abc"); + Assert.assertEquals(StrUtil.subPre("abcd", 3), "abc"); + Assert.assertEquals(StrUtil.subPre("abcd", -3), "a"); + Assert.assertEquals(StrUtil.subPre("ab", 3), "ab"); + } + @Test public void subByCodePointTest() { // 🤔👍🍓🤔