mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
StrUtil.replace歧义,修改为replaceByCodePoint
This commit is contained in:
parent
923cf3d265
commit
c5f37b062e
@ -2,12 +2,13 @@
|
||||
# 🚀Changelog
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
# 5.8.27(2024-03-06)
|
||||
# 5.8.27(2024-03-07)
|
||||
|
||||
### 🐣新特性
|
||||
* 【extra 】 FreemarkerEngine修改默认版本参数
|
||||
* 【db 】 增加达梦数据库方言(pr#1178@Gitee)
|
||||
* 【core 】 HexUtil#format方法增加prefix参数(issue#I93PU9@Gitee)
|
||||
* 【core 】 StrUtil.replace歧义,修改为replaceByCodePoint(issue#I96LWH@Gitee)
|
||||
|
||||
### 🐞Bug修复
|
||||
* 【core 】 修复PathMover对目标已存在且只读文件报错错误问题(issue#I95CLT@Gitee)
|
||||
|
@ -16,10 +16,7 @@ import java.nio.ByteBuffer;
|
||||
import java.nio.charset.Charset;
|
||||
import java.text.MessageFormat;
|
||||
import java.text.Normalizer;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
@ -2461,9 +2458,7 @@ public class CharSequenceUtil {
|
||||
}
|
||||
|
||||
char[] result = new char[count];
|
||||
for (int i = 0; i < count; i++) {
|
||||
result[i] = c;
|
||||
}
|
||||
Arrays.fill(result, c);
|
||||
return new String(result);
|
||||
}
|
||||
|
||||
@ -3536,7 +3531,7 @@ public class CharSequenceUtil {
|
||||
if (str == null || isEmpty(prefix) || startWith(str, prefix, ignoreCase)) {
|
||||
return str(str);
|
||||
}
|
||||
if (prefixes != null && prefixes.length > 0) {
|
||||
if (prefixes != null) {
|
||||
for (final CharSequence s : prefixes) {
|
||||
if (startWith(str, s, ignoreCase)) {
|
||||
return str.toString();
|
||||
@ -3650,8 +3645,25 @@ public class CharSequenceUtil {
|
||||
* @param replacedChar 被替换的字符
|
||||
* @return 替换后的字符串
|
||||
* @since 3.2.1
|
||||
* @deprecated 歧义,请使用{@link #replaceByCodePoint(CharSequence, int, int, char)}
|
||||
*/
|
||||
@Deprecated
|
||||
public static String replace(CharSequence str, int startInclude, int endExclude, char replacedChar) {
|
||||
return replaceByCodePoint(str, startInclude, endExclude, replacedChar);
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换指定字符串的指定区间内字符为固定字符<br>
|
||||
* 此方法使用{@link String#codePoints()}完成拆分替换
|
||||
*
|
||||
* @param str 字符串
|
||||
* @param startInclude 开始位置(包含)
|
||||
* @param endExclude 结束位置(不包含)
|
||||
* @param replacedChar 被替换的字符
|
||||
* @return 替换后的字符串
|
||||
* @since 5.8.27
|
||||
*/
|
||||
public static String replaceByCodePoint(CharSequence str, int startInclude, int endExclude, char replacedChar) {
|
||||
if (isEmpty(str)) {
|
||||
return str(str);
|
||||
}
|
||||
@ -3690,8 +3702,25 @@ public class CharSequenceUtil {
|
||||
* @param replacedStr 被替换的字符串
|
||||
* @return 替换后的字符串
|
||||
* @since 3.2.1
|
||||
* @deprecated 歧义,请使用{@link #replaceByCodePoint(CharSequence, int, int, CharSequence)}
|
||||
*/
|
||||
@Deprecated
|
||||
public static String replace(CharSequence str, int startInclude, int endExclude, CharSequence replacedStr) {
|
||||
return replaceByCodePoint(str, startInclude, endExclude, replacedStr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换指定字符串的指定区间内字符为指定字符串,字符串只重复一次<br>
|
||||
* 此方法使用{@link String#codePoints()}完成拆分替换
|
||||
*
|
||||
* @param str 字符串
|
||||
* @param startInclude 开始位置(包含)
|
||||
* @param endExclude 结束位置(不包含)
|
||||
* @param replacedStr 被替换的字符串
|
||||
* @return 替换后的字符串
|
||||
* @since 5.8.27
|
||||
*/
|
||||
public static String replaceByCodePoint(CharSequence str, int startInclude, int endExclude, CharSequence replacedStr) {
|
||||
if (isEmpty(str)) {
|
||||
return str(str);
|
||||
}
|
||||
@ -3814,7 +3843,7 @@ public class CharSequenceUtil {
|
||||
if (INDEX_NOT_FOUND == startInclude) {
|
||||
return str(str);
|
||||
}
|
||||
return replace(str, startInclude, startInclude + searchStr.length(), replacedStr);
|
||||
return replaceByCodePoint(str, startInclude, startInclude + searchStr.length(), replacedStr);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3838,7 +3867,7 @@ public class CharSequenceUtil {
|
||||
* @since 4.1.14
|
||||
*/
|
||||
public static String hide(CharSequence str, int startInclude, int endExclude) {
|
||||
return replace(str, startInclude, endExclude, '*');
|
||||
return replaceByCodePoint(str, startInclude, endExclude, '*');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -25,7 +25,7 @@ public class CharSequenceUtilTest {
|
||||
@Test
|
||||
public void replaceByStrTest() {
|
||||
String replace = "SSM15930297701BeryAllen";
|
||||
String result = CharSequenceUtil.replace(replace, 5, 12, "***");
|
||||
String result = CharSequenceUtil.replaceByCodePoint(replace, 5, 12, "***");
|
||||
Assert.assertEquals("SSM15***01BeryAllen", result);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,15 @@
|
||||
package cn.hutool.core.text;
|
||||
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import org.junit.Test;
|
||||
|
||||
public class IssueI96LWHTest {
|
||||
@Test
|
||||
public void replaceTest() {
|
||||
String str = "\uD83D\uDC46最上方点击蓝字";
|
||||
Console.log(str.codePoints().toArray());
|
||||
Console.log(StrUtil.replaceByCodePoint(str, 3, 4, "下"));
|
||||
Console.log(new StringBuilder(str).replace(3, 4, "下"));
|
||||
}
|
||||
}
|
@ -1,13 +1,12 @@
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 字符串工具类单元测试
|
||||
*
|
||||
@ -219,9 +218,9 @@ public class StrUtilTest {
|
||||
|
||||
@Test
|
||||
public void replaceTest() {
|
||||
String string = StrUtil.replace("aabbccdd", 2, 6, '*');
|
||||
String string = StrUtil.replaceByCodePoint("aabbccdd", 2, 6, '*');
|
||||
Assert.assertEquals("aa****dd", string);
|
||||
string = StrUtil.replace("aabbccdd", 2, 12, '*');
|
||||
string = StrUtil.replaceByCodePoint("aabbccdd", 2, 12, '*');
|
||||
Assert.assertEquals("aa******", string);
|
||||
}
|
||||
|
||||
@ -251,11 +250,11 @@ public class StrUtilTest {
|
||||
@Test
|
||||
public void replaceTest5() {
|
||||
final String a = "\uD853\uDC09秀秀";
|
||||
final String result = StrUtil.replace(a, 1, a.length(), '*');
|
||||
final String result = StrUtil.replaceByCodePoint(a, 1, a.length(), '*');
|
||||
Assert.assertEquals("\uD853\uDC09**", result);
|
||||
|
||||
final String aa = "规划大师";
|
||||
final String result1 = StrUtil.replace(aa, 2, a.length(), '*');
|
||||
final String result1 = StrUtil.replaceByCodePoint(aa, 2, a.length(), '*');
|
||||
Assert.assertEquals("规划**", result1);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user