美文网首页
JAVA8下生成随机字符串

JAVA8下生成随机字符串

作者: cocalrush | 来源:发表于2017-08-20 18:24 被阅读0次

    最近有个需求需要生成一个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下生成随机字符串

          本文链接:https://www.haomeiwen.com/subject/amwfdxtx.html