From 1776471134115a5ef96a05d192e1c5095c6fd0ff Mon Sep 17 00:00:00 2001 From: Xjf <965921784@qq.com> Date: Mon, 27 Jan 2025 11:22:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E5=A1=AB=E5=85=85-=E9=80=82=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E5=A4=8D=E6=9D=82=E4=B8=9A=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/hutool/core/text/StrUtil.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/text/StrUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/text/StrUtil.java index 898c298fd..1f6eab1fd 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/text/StrUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/text/StrUtil.java @@ -25,6 +25,7 @@ import java.io.StringReader; import java.io.StringWriter; import java.nio.ByteBuffer; import java.nio.charset.Charset; +import java.util.Optional; /** * 字符串工具类
@@ -371,4 +372,41 @@ public class StrUtil extends CharSequenceUtil implements StrPool { public static String similar(final String str1, final String str2, final int scale) { return TextSimilarity.similar(str1, str2, scale); } + + /** + * 字符串填充 + * @param str 被填充的字符串(原始字符串) + * @param left 往原始字符串的左边填充 + * @param right 往原始字符串的右边填充 + * @param middle 往原始字符串的中间填充 + * @param middlePos 填充的索引位置 + * @return flexibleConcat + */ + public static String flexibleConcat(String str, String left, String right, String middle, int middlePos) { + // 使用 StringBuilder 来提高拼接性能 + StringBuilder sb = new StringBuilder(); + + // 如果原始字符串不为 null,添加到 StringBuilder + if (str != null) { + sb.append(str); + } + + // 左边拼接字符串(如果有 + Optional.ofNullable(left) + .filter(s -> !s.isEmpty()) + .ifPresent(l -> sb.insert(0, l.toCharArray())); + + // 右边拼接字符串(如果有) + Optional.ofNullable(right) + .filter(s -> !s.isEmpty()) + .ifPresent(sb::append); + + // 中间拼接字符串(如果有且位置有效) + Optional.ofNullable(middle) + .filter(s -> !s.isEmpty()) + .filter(s -> middlePos >= 0 && middlePos <= sb.length()) + .ifPresent(m -> sb.insert(middlePos, m.toCharArray())); + + return sb.toString(); + } }