修复RandomUtil.randomStringWithoutStr方法问题

This commit is contained in:
Looly
2024-04-17 15:30:49 +08:00
parent 3fc15c4f24
commit ce6c2ae15b
2 changed files with 17 additions and 5 deletions

View File

@@ -675,14 +675,28 @@ public class RandomUtil {
return randomString(BASE_CHAR_NUMBER_LOWER, length).toUpperCase(); return randomString(BASE_CHAR_NUMBER_LOWER, length).toUpperCase();
} }
/**
* 获得一个随机的字符串(只包含数字和字母) 并排除指定字符串
*
* @param length 字符串的长度
* @param elemData 要排除的字符串,如去重容易混淆的字符串oO0、lL1、q9Q、pP区分大小写
* @return 随机字符串
*/
public static String randomStringWithoutStr(final int length, final String elemData) {
String baseStr = BASE_CHAR_NUMBER;
baseStr = StrUtil.removeAll(baseStr, elemData.toCharArray());
return randomString(baseStr, length);
}
/** /**
* 获得一个随机的字符串(只包含数字和小写字母) 并排除指定字符串 * 获得一个随机的字符串(只包含数字和小写字母) 并排除指定字符串
* *
* @param length 字符串的长度 * @param length 字符串的长度
* @param elemData 要排除的字符串,如去重容易混淆的字符串oO0、lL1、q9Q、pP不区分大小写 * @param elemData 要排除的字符串,如去重容易混淆的字符串oO0、lL1、q9Q、pP不区分大小写
* @return 随机字符串 * @return 随机字符串
* @since 5.8.28
*/ */
public static String randomStringWithoutStr(final int length, final String elemData) { public static String randomStringLowerWithoutStr(final int length, final String elemData) {
String baseStr = BASE_CHAR_NUMBER_LOWER; String baseStr = BASE_CHAR_NUMBER_LOWER;
baseStr = StrUtil.removeAll(baseStr, elemData.toLowerCase().toCharArray()); baseStr = StrUtil.removeAll(baseStr, elemData.toLowerCase().toCharArray());
return randomString(baseStr, length); return randomString(baseStr, length);

View File

@@ -76,11 +76,9 @@ public class RandomUtilTest {
} }
@Test @Test
@Disabled public void randomStringLowerWithoutStrTest() {
public void randomStringWithoutStrTest() {
for (int i = 0; i < 100; i++) { for (int i = 0; i < 100; i++) {
final String s = RandomUtil.randomStringWithoutStr(8, "0IPOL"); final String s = RandomUtil.randomStringLowerWithoutStr(8, "0IPOL");
System.out.println(s);
for (final char c : "0IPOL".toCharArray()) { for (final char c : "0IPOL".toCharArray()) {
Assertions.assertFalse(s.contains((String.valueOf(c).toLowerCase(Locale.ROOT)))); Assertions.assertFalse(s.contains((String.valueOf(c).toLowerCase(Locale.ROOT))));
} }