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