diff --git a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java
index 6ddb37c70..2b61b7a5e 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java
@@ -2415,6 +2415,43 @@ public class StrUtil {
return result.toArray(new String[0]);
}
+ /**
+ * 截取指定字符串多段中间部分,不包括标识字符串
+ *
+ * 栗子: + * + *
+ * StrUtil.subBetweenAll(null, *) = [] + * StrUtil.subBetweenAll(*, null) = [] + * StrUtil.subBetweenAll(*, *) = [] + * StrUtil.subBetweenAll("", "") = [] + * StrUtil.subBetweenAll("", "#") = [] + * StrUtil.subBetweenAll("gotanks", "") = [] + * StrUtil.subBetweenAll("#gotanks#", "#") = ["gotanks"] + * StrUtil.subBetweenAll("#hello# #world#!", "#") = ["hello", "world"] + * StrUtil.subBetweenAll("#hello# world#!", "#"); = ["hello"] + *+ * + * @param str 被切割的字符串 + * @param beforeAndAfter 截取开始和结束的字符串标识 + * @return 截取后的字符串 + * @author gotanks + * @since 5.4.7 + */ + public static String[] subBetweenAll(CharSequence str, CharSequence beforeAndAfter) { + String[] resultArr = new String[0]; + if (hasEmpty(str, beforeAndAfter) || !contains(str, beforeAndAfter)) { + return resultArr; + } + + final List