This commit is contained in:
Looly
2024-03-07 16:03:57 +08:00
parent 27d67c4d84
commit 197e89e692
6 changed files with 75 additions and 25 deletions

View File

@@ -40,10 +40,10 @@ public class CharSequenceUtilTest {
@Test
public void replaceByStrTest() {
final String replace = "SSM15930297701BeryAllen";
final String result = CharSequenceUtil.replace(replace, 5, 12, "***");
final String result = CharSequenceUtil.replaceByCodePoint(replace, 5, 12, "***");
Assertions.assertEquals("SSM15***01BeryAllen", result);
final String emoji = StrUtil.replace("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, "***");
final String emoji = StrUtil.replaceByCodePoint("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, "***");
Assertions.assertEquals("\uD83D\uDE00a***ccdd", emoji);
}

View File

@@ -0,0 +1,16 @@
package org.dromara.hutool.core.text;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class IssueI96LWHTest {
@Test
public void replaceByCodePointTest() {
final String str = "\uD83D\uDC46最上方点击蓝字";
// 这个方法里\uD83D\uDC46表示一个emoji表情使用codePoint之后一个表情表示一个字符因此按照一个字符对
Assertions.assertEquals("\uD83D\uDC46最上下点击蓝字", StrUtil.replaceByCodePoint(str, 3, 4, ""));
Assertions.assertEquals("\uD83D\uDC46最下方点击蓝字", new StringBuilder(str).replace(3, 4, "").toString());
}
}

View File

@@ -181,12 +181,12 @@ public class StrUtilTest {
@Test
public void replaceTest() {
String string = StrUtil.replace("aabbccdd", 2, 6, '*');
String string = StrUtil.replaceByCodePoint("aabbccdd", 2, 6, '*');
Assertions.assertEquals("aa****dd", string);
string = StrUtil.replace("aabbccdd", 2, 12, '*');
string = StrUtil.replaceByCodePoint("aabbccdd", 2, 12, '*');
Assertions.assertEquals("aa******", string);
final String emoji = StrUtil.replace("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, '*');
final String emoji = StrUtil.replaceByCodePoint("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, '*');
Assertions.assertEquals("\uD83D\uDE00a****ccdd", emoji);
}
@@ -210,11 +210,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(), '*');
Assertions.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(), '*');
Assertions.assertEquals("规划**", result1);
}
@@ -602,10 +602,10 @@ public class StrUtilTest {
@Test
public void testReplaceByStr() {
final String replace = "SSM15930297701BeryAllen";
final String result = StrUtil.replace(replace, 5, 12, "***");
final String result = StrUtil.replaceByCodePoint(replace, 5, 12, "***");
Assertions.assertEquals("SSM15***01BeryAllen", result);
final String emoji = StrUtil.replace("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, "***");
final String emoji = StrUtil.replaceByCodePoint("\uD83D\uDE00aabb\uD83D\uDE00ccdd", 2, 6, "***");
Assertions.assertEquals("\uD83D\uDE00a***ccdd", emoji);
}