JAVA8下生成随机字符串

最近有个需求需要生成一个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

你可能感兴趣的:(JAVA8下生成随机字符串)