feat: 添加字符串填充-适用于复杂业务

This commit is contained in:
Xjf 2025-01-27 11:22:41 +08:00
parent f464411b90
commit 1776471134

View File

@ -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;
/**
* 字符串工具类<br>
@ -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();
}
}