字母数字随机数序列[5位或6位或任何数字]生成

作为:

嗨,我正在尝试生成5位数字的随机数,该数字本质上是字母数字。我在不使用Streams的情况下都做到了。

public class AlphaRandom {
    
    private static final String ALPHA_NUMERIC_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    static final Random random = new Random();
    
    
    public static void main(String args[]) {
        int length = 5;
        String seq = randomAlphaNumeric(length);        
        System.out.println("Random Number Normal  : " +seq);        
        IntStream.range(0,1).forEach(i->System.out.println("Random Number Streams : " +generateRandomString(random, length)));
        
    }
    
    // Using Streams
    private static String generateRandomString(Random random, int length){
        return random.ints(48,122)
                .filter(i-> (i<57 || i>65) && (i <90 || i>97))
                .mapToObj(i -> (char) i)
                .limit(length)
                .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
                .toString();
    }
    
    // Normal 
    public static String randomAlphaNumeric(int count) {

        StringBuilder builder = new StringBuilder();    
        while (count-- != 0) {  
            int character = (int)(Math.random()*ALPHA_NUMERIC_STRING.length()); 
            builder.append(ALPHA_NUMERIC_STRING.charAt(character)); 
        }   
        return builder.toString();
    }
}

样本输出

Random Number Normal  : VYAXC
Random Number Streams : LdBN6

Random Number Normal  : 2ANTT
Random Number Streams : hfegc

Random Number Normal  : JWK4Y
Random Number Streams : 8mQXK

但是我无法生成始终以UpperCase唯一开头的序列有人可以帮我吗。

Ajay Kr Choudhary:

我将使用RandomStringUtilsapache库来执行此操作。这样做的原因是更少的代码,我相信代码的可读性更好。

这是我的代码,可以执行所需的操作

import org.apache.commons.lang3.RandomStringUtils;

public class GenerateRandomString {
    public static void main(String[] args) {
        int keyLength = 5; // Number of character allowed as per requirement
        String randomAlphanumeric = RandomStringUtils.randomAlphanumeric(keyLength);
        System.out.println("randomAlphanumeric generated is " + randomAlphanumeric);
        String upperCaseRandom = randomAlphanumeric.substring(0, 1).toUpperCase() + randomAlphanumeric.substring(1);
        System.out.println("upperCaseRandom generated is " + upperCaseRandom);
    }
}

它将生成以下输出:

randomAlphanumeric generated is m8OiR
upperCaseRandom generated is M8OiR

我正在使用substring方法根据问题的要求将第一个字符转换为大写。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章