java 生成数字,字符,特殊字符组合方式代码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013791374/article/details/52931986

public class RandomAlphaNumericGenerator {

private static final char[] symbols;

    static {
        StringBuilder tmp = new StringBuilder();
        for (char ch = '0'; ch <= '9'; ++ch)
            tmp.append(ch);
        for (char ch = 'a'; ch <= 'z'; ++ch)
            tmp.append(ch);
        for (char ch = 'A'; ch <= 'Z'; ++ch)
            tmp.append(ch);

        // 添加一些特殊字符
        tmp.append("!@#$%.*&?>/-`~^,");
        symbols = tmp.toString().toCharArray();
    }

    private final Random random = new Random();

    private final char[] buf;

    public RandomAlphaNumericGenerator(int length) {
        if (length < 1)
            throw new IllegalArgumentException("length < 1: " + length);
        buf = new char[length];
    }

    public String nextString() {
        for (int idx = 0; idx < buf.length; ++idx)
            buf[idx] = symbols[random.nextInt(symbols.length)];
        return new String(buf);
    }

    public static void main(String[] args) {
        RandomAlphaNumericGenerator randomTest = new RandomAlphaNumericGenerator(
                11);
        for (int i = 0; i < 10; i++) {
            String result = null;
            do {
                result = randomTest.nextString();
            } while (!result
                    .matches(".*(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%]).*"));
            System.out.println(result);
        }
        System.out.println();

    }

}

展开阅读全文

没有更多推荐了,返回首页