From 32c7dd0c6b02d3ab8399c361cf12c4204bf4511b Mon Sep 17 00:00:00 2001
From: emptypoint <1215582715@qq.com>
Date: Sun, 12 Mar 2023 20:52:27 +0800
Subject: [PATCH] 1.fix doc; 2.update code;
---
.../hutool/core/text/finder/CharFinder.java | 6 +-
.../hutool/core/text/finder/LengthFinder.java | 2 +-
.../core/text/finder/PatternFinder.java | 4 +-
.../cn/hutool/core/text/split/SplitIter.java | 2 +-
.../cn/hutool/core/text/split/SplitUtil.java | 68 ++++++++++---------
5 files changed, 44 insertions(+), 38 deletions(-)
diff --git a/hutool-core/src/main/java/cn/hutool/core/text/finder/CharFinder.java b/hutool-core/src/main/java/cn/hutool/core/text/finder/CharFinder.java
index 61029fdb0..5eece80c0 100644
--- a/hutool-core/src/main/java/cn/hutool/core/text/finder/CharFinder.java
+++ b/hutool-core/src/main/java/cn/hutool/core/text/finder/CharFinder.java
@@ -1,7 +1,7 @@
package cn.hutool.core.text.finder;
import cn.hutool.core.lang.Assert;
-import cn.hutool.core.math.NumberUtil;
+import cn.hutool.core.util.CharUtil;
/**
* 字符查找器
@@ -42,13 +42,13 @@ public class CharFinder extends TextFinder {
final int limit = getValidEndIndex();
if(negative){
for (int i = from; i > limit; i--) {
- if (NumberUtil.equals(c, text.charAt(i), caseInsensitive)) {
+ if (CharUtil.equals(c, text.charAt(i), caseInsensitive)) {
return i;
}
}
} else{
for (int i = from; i < limit; i++) {
- if (NumberUtil.equals(c, text.charAt(i), caseInsensitive)) {
+ if (CharUtil.equals(c, text.charAt(i), caseInsensitive)) {
return i;
}
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/text/finder/LengthFinder.java b/hutool-core/src/main/java/cn/hutool/core/text/finder/LengthFinder.java
index be20641b1..40f1e855f 100644
--- a/hutool-core/src/main/java/cn/hutool/core/text/finder/LengthFinder.java
+++ b/hutool-core/src/main/java/cn/hutool/core/text/finder/LengthFinder.java
@@ -16,7 +16,7 @@ public class LengthFinder extends TextFinder {
/**
* 构造
- * @param length 长度
+ * @param length 长度,必须大于0
*/
public LengthFinder(final int length) {
Assert.isTrue(length > 0, "Length must be great than 0");
diff --git a/hutool-core/src/main/java/cn/hutool/core/text/finder/PatternFinder.java b/hutool-core/src/main/java/cn/hutool/core/text/finder/PatternFinder.java
index 6de946500..209058b6a 100644
--- a/hutool-core/src/main/java/cn/hutool/core/text/finder/PatternFinder.java
+++ b/hutool-core/src/main/java/cn/hutool/core/text/finder/PatternFinder.java
@@ -1,5 +1,7 @@
package cn.hutool.core.text.finder;
+import cn.hutool.core.regex.PatternPool;
+
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -23,7 +25,7 @@ public class PatternFinder extends TextFinder {
* @param caseInsensitive 是否忽略大小写
*/
public PatternFinder(final String regex, final boolean caseInsensitive) {
- this(Pattern.compile(regex, caseInsensitive ? Pattern.CASE_INSENSITIVE : 0));
+ this(PatternPool.get(regex, caseInsensitive ? Pattern.CASE_INSENSITIVE : 0));
}
/**
diff --git a/hutool-core/src/main/java/cn/hutool/core/text/split/SplitIter.java b/hutool-core/src/main/java/cn/hutool/core/text/split/SplitIter.java
index b82bb0336..2c36dd4c4 100644
--- a/hutool-core/src/main/java/cn/hutool/core/text/split/SplitIter.java
+++ b/hutool-core/src/main/java/cn/hutool/core/text/split/SplitIter.java
@@ -125,7 +125,7 @@ public class SplitIter extends ComputeIter implements Serializable {
* @return 切分后的列表
*/
public List toList(final boolean trim) {
- return toList((str) -> trim ? StrUtil.trim(str) : str);
+ return toList(trim ? StrUtil::trim : Function.identity());
}
/**
diff --git a/hutool-core/src/main/java/cn/hutool/core/text/split/SplitUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/split/SplitUtil.java
index 6a16f86de..e6505b214 100644
--- a/hutool-core/src/main/java/cn/hutool/core/text/split/SplitUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/text/split/SplitUtil.java
@@ -25,6 +25,7 @@ public class SplitUtil {
/**
* 切分字符串路径,仅支持Unix分界符:/
+ * 去除每个元素两边空格,大小写敏感,忽略空串
*
* @param str 被切分的字符串
* @return 切分后的集合
@@ -36,6 +37,7 @@ public class SplitUtil {
/**
* 切分字符串路径,仅支持Unix分界符:/
+ * 去除每个元素两边空格,大小写敏感,忽略空串
*
* @param str 被切分的字符串
* @return 切分后的集合
@@ -47,9 +49,10 @@ public class SplitUtil {
/**
* 切分字符串路径,仅支持Unix分界符:/
+ * 去除每个元素两边空格,大小写敏感,忽略空串
*
* @param str 被切分的字符串
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @return 切分后的集合
* @since 3.0.8
*/
@@ -59,9 +62,10 @@ public class SplitUtil {
/**
* 切分字符串路径,仅支持Unix分界符:/
+ * 去除每个元素两边空格,大小写敏感,忽略空串
*
* @param str 被切分的字符串
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @return 切分后的集合
* @since 3.0.8
*/
@@ -70,7 +74,7 @@ public class SplitUtil {
}
/**
- * 切分字符串
+ * 切分字符串,大小写敏感,去除每个元素两边空白符
*
* @param str 被切分的字符串
* @param separator 分隔符字符
@@ -101,7 +105,7 @@ public class SplitUtil {
*
* @param str 被切分的字符串
* @param separator 分隔符字符
- * @param limit 限制分片数,-1不限制
+ * @param limit 限制分片数,小于等于0表示无限制
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
* @since 3.0.8
@@ -115,7 +119,7 @@ public class SplitUtil {
*
* @param str 被切分的字符串
* @param separator 分隔符字符
- * @param limit 限制分片数,-1不限制
+ * @param limit 限制分片数,小于等于0表示无限制
* @param isTrim 是否去除切分字符串后每个元素两边的空格
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
@@ -131,7 +135,7 @@ public class SplitUtil {
* @param 切分后的元素类型
* @param str 被切分的字符串
* @param separator 分隔符字符
- * @param limit 限制分片数,-1不限制
+ * @param limit 限制分片数,小于等于0表示无限制
* @param ignoreEmpty 是否忽略空串
* @param mapping 切分后的字符串元素的转换方法
* @return 切分后的集合,元素类型是经过 mapping 转换后的
@@ -146,7 +150,7 @@ public class SplitUtil {
*
* @param text 被切分的字符串
* @param separator 分隔符字符
- * @param limit 限制分片数,-1不限制
+ * @param limit 限制分片数,小于等于0表示无限制
* @param isTrim 是否去除切分字符串后每个元素两边的空格
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
@@ -161,7 +165,7 @@ public class SplitUtil {
*
* @param text 被切分的字符串
* @param separator 分隔符字符
- * @param limit 限制分片数,-1不限制
+ * @param limit 限制分片数,小于等于0表示无限制
* @param isTrim 是否去除切分字符串后每个元素两边的空格
* @param ignoreEmpty 是否忽略空串
* @param ignoreCase 是否忽略大小写
@@ -178,7 +182,7 @@ public class SplitUtil {
* @param 切分后的元素类型
* @param text 被切分的字符串
* @param separator 分隔符字符
- * @param limit 限制分片数,-1不限制
+ * @param limit 限制分片数,小于等于0表示无限制
* @param ignoreEmpty 是否忽略空串
* @param ignoreCase 是否忽略大小写
* @param mapping 切分后的字符串元素的转换方法
@@ -187,7 +191,7 @@ public class SplitUtil {
*/
public static List split(final CharSequence text, final char separator, final int limit, final boolean ignoreEmpty,
final boolean ignoreCase, final Function mapping) {
- if (null == text) {
+ if (StrUtil.isEmpty(text)) {
return new ArrayList<>(0);
}
final SplitIter splitIter = new SplitIter(text, new CharFinder(separator, ignoreCase), limit, ignoreEmpty);
@@ -199,7 +203,7 @@ public class SplitUtil {
*
* @param str 被切分的字符串
* @param separator 分隔符字符
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @param isTrim 是否去除切分字符串后每个元素两边的空格
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
@@ -226,7 +230,7 @@ public class SplitUtil {
}
/**
- * 切分字符串,去除每个元素两边空格,忽略大小写
+ * 切分字符串,去除每个元素两边空格,不忽略大小写
*
* @param str 被切分的字符串
* @param separator 分隔符字符串
@@ -254,11 +258,11 @@ public class SplitUtil {
}
/**
- * 切分字符串,去除每个元素两边空格,忽略大小写
+ * 切分字符串,去除每个元素两边空格,不忽略大小写
*
* @param str 被切分的字符串
* @param separator 分隔符字符串
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
* @since 3.2.1
@@ -272,7 +276,7 @@ public class SplitUtil {
*
* @param str 被切分的字符串
* @param separator 分隔符字符串
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @param isTrim 是否去除切分字符串后每个元素两边的空格
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
@@ -287,7 +291,7 @@ public class SplitUtil {
*
* @param str 被切分的字符串
* @param separator 分隔符字符串
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
* @since 3.2.1
@@ -310,7 +314,7 @@ public class SplitUtil {
* @since 3.2.1
*/
public static List split(final CharSequence text, final String separator, final int limit, final boolean isTrim, final boolean ignoreEmpty, final boolean ignoreCase) {
- if (null == text) {
+ if (StrUtil.isEmpty(text)) {
return new ArrayList<>(0);
}
final SplitIter splitIter = new SplitIter(text, new StrFinder(separator, ignoreCase), limit, ignoreEmpty);
@@ -340,12 +344,12 @@ public class SplitUtil {
* 如果为空字符串或者null 则返回空集合
*
* @param text 被切分的字符串
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @return 切分后的集合
* @since 3.0.8
*/
public static List split(final CharSequence text, final int limit) {
- if (null == text) {
+ if (StrUtil.isBlank(text)) {
return new ArrayList<>(0);
}
final SplitIter splitIter = new SplitIter(text, new CharMatcherFinder(CharUtil::isBlankChar), limit, true);
@@ -356,11 +360,11 @@ public class SplitUtil {
* 切分字符串为字符串数组
*
* @param str 被切分的字符串
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @return 切分后的集合
* @since 3.0.8
*/
- public static String[] splitToArray(final String str, final int limit) {
+ public static String[] splitToArray(final CharSequence str, final int limit) {
return toArray(split(str, limit));
}
//---------------------------------------------------------------------------------------------- Split by regex
@@ -370,13 +374,13 @@ public class SplitUtil {
*
* @param text 字符串
* @param separatorRegex 分隔符正则
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @param isTrim 是否去除切分字符串后每个元素两边的空格
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
* @since 3.0.8
*/
- public static List splitByRegex(final String text, final String separatorRegex, final int limit, final boolean isTrim, final boolean ignoreEmpty) {
+ public static List splitByRegex(final CharSequence text, final String separatorRegex, final int limit, final boolean isTrim, final boolean ignoreEmpty) {
final Pattern pattern = PatternPool.get(separatorRegex);
return split(text, pattern, limit, isTrim, ignoreEmpty);
}
@@ -387,14 +391,14 @@ public class SplitUtil {
*
* @param text 字符串
* @param separatorPattern 分隔符正则{@link Pattern}
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @param isTrim 是否去除切分字符串后每个元素两边的空格
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
* @since 3.0.8
*/
- public static List split(final String text, final Pattern separatorPattern, final int limit, final boolean isTrim, final boolean ignoreEmpty) {
- if (null == text) {
+ public static List split(final CharSequence text, final Pattern separatorPattern, final int limit, final boolean isTrim, final boolean ignoreEmpty) {
+ if (StrUtil.isEmpty(text)) {
return new ArrayList<>(0);
}
final SplitIter splitIter = new SplitIter(text, new PatternFinder(separatorPattern), limit, ignoreEmpty);
@@ -406,13 +410,13 @@ public class SplitUtil {
*
* @param str 被切分的字符串
* @param separatorPattern 分隔符正则{@link Pattern}
- * @param limit 限制分片数
+ * @param limit 限制分片数,小于等于0表示无限制
* @param isTrim 是否去除切分字符串后每个元素两边的空格
* @param ignoreEmpty 是否忽略空串
* @return 切分后的集合
* @since 3.0.8
*/
- public static String[] splitToArray(final String str, final Pattern separatorPattern, final int limit, final boolean isTrim, final boolean ignoreEmpty) {
+ public static String[] splitToArray(final CharSequence str, final Pattern separatorPattern, final int limit, final boolean isTrim, final boolean ignoreEmpty) {
return toArray(split(str, separatorPattern, limit, isTrim, ignoreEmpty));
}
//---------------------------------------------------------------------------------------------- Split by length
@@ -421,11 +425,11 @@ public class SplitUtil {
* 根据给定长度,将给定字符串截取为多个部分
*
* @param text 字符串
- * @param len 每一个小节的长度
+ * @param len 每一个小节的长度,必须大于0
* @return 截取后的字符串数组
*/
public static String[] splitByLength(final CharSequence text, final int len) {
- if (null == text) {
+ if (StrUtil.isEmpty(text)) {
return new String[0];
}
final SplitIter splitIter = new SplitIter(text, new LengthFinder(len), -1, false);
@@ -449,8 +453,8 @@ public class SplitUtil {
* @param isTrim 是否trim
* @return {@link Function}
*/
- private static Function trimFunc(final boolean isTrim) {
- return (str) -> isTrim ? StrUtil.trim(str) : str;
+ public static Function trimFunc(final boolean isTrim) {
+ return isTrim ? StrUtil::trim : Function.identity();
}
//---------------------------------------------------------------------------------------------------------- Private method end
}