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() { // 🤔👍🍓🤔