最近有个需求需要生成一个20位的随机字符串,先在commons-lang3的包下3.6版本的RandomStringUtils的类已经被标注为Deprecated不能使用了
//commons-lang3下3.6版本的
/** @deprecated */
@Deprecated
public class RandomStringUtils {
private static final Random RANDOM = new Random();
看了下API文档上说是移到commons-text包的RandomStringGenerator类了。
立刻拉下来试试
//官方友好的给了提示
//生成20个字符长度的a到z的随机字符串
// Generates a 20 code point string, using only the letters a-z
RandomStringGenerator generator = new RandomStringGenerator.Builder()
.withinRange('a', 'z').build();
String randomLetters = generator.generate(20);
//但是我的需要是0 -9 ,a - z这种情况怎么办。
//查了一圈发现有个filter 添加过滤规则就行。
RandomStringGenerator generator = new RandomStringGenerator.Builder().withinRange('0', 'z').filteredBy(LETTERS, DIGITS).build();
//保留是数字的,字母的
//同样我们还能实现自己的过滤器 这使用强大的lamda表达式,我们只要‘3’到‘9’的数字字符和字母(注意引号)
CharacterPredicate filter2 = c -> c >= '3' && c<= '9';
RandomStringGenerator generator = new RandomStringGenerator.Builder().withinRange('0', 'Z').filteredBy(filter2,LETTERS).build();
String randomLetters = generator.generate(20);
//输出
CENKAMSPXM6U4LDB7T6Q
UTQNK86H65VF5GL3MRU6
NAL5HWML7WYLOCKDBPPB
KBWHIYCUHRX9LKVOZ4LV
网友评论