package com.yanzuoguang.util.helper; import com.yanzuoguang.util.YzgError; import com.yanzuoguang.util.contants.SystemContants; import java.util.Random; import java.util.UUID; /** * 随机码生成工具 * * @author 颜佐光 */ public final class RandomHelper { public static final String NUMBER = "0123456789"; public static final String LOWER_LETTER = "abcdefghijklmnopqrstuvwxyz"; public static final String UPPER_LETTER = LOWER_LETTER.toUpperCase(); private static final String RANDOM_CHARSET = NUMBER + LOWER_LETTER + UPPER_LETTER; private static final int RANDOM_CHARSET_LEN = RANDOM_CHARSET.length(); private static final int RANDOM_SIZE = 6; /** * 得到32位随机码 * * @return */ public static String generateUUID32() { return replace(UUID.randomUUID().toString(), SystemContants.TRANSVERSE, SystemContants.EMPTY); } /** * 得到64位随机码 * * @return */ public static String generateUUID64() { return generateUUID32() + generateUUID32(); } /** * 随机码(6位) * * @return */ public static String generateRandomCodeSix() { StringBuffer sb = new StringBuffer(); for (int i = 0; i < RANDOM_SIZE; i++) { sb.append(generateRandomCodeOne(RANDOM_CHARSET, RANDOM_CHARSET_LEN)); } return sb.toString(); } /** * 随机码(指定长度) * * @param len 随机码长度 * @return */ public static String generateRandomCodeSix(int len) { if (len < 1) { throw YzgError.getRuntimeException("015",len); } StringBuffer sb = new StringBuffer(); for (int i = 0; i < len; i++) { sb.append(generateRandomCodeOne(RANDOM_CHARSET, RANDOM_CHARSET_LEN)); } return sb.toString(); } /** * 随机生成指定字符集、指定长度的的随机码 * * @param charset 基础字符集 * @param len 生成随机码长度 * @return */ public static String generateRandomCode(String charset, int len) { if (null == charset || "".equals(charset)) { throw YzgError.getRuntimeException("016"); } if (len < 1) { throw YzgError.getRuntimeException("015",len); } StringBuffer sb = new StringBuffer(); for (int i = 0; i < len; i++) { sb.append(generateRandomCodeOne(charset, charset.length())); } return sb.toString(); } /** * 指定字符集中,随机产生一个字符 * * @param charset * @param len * @return */ private static String generateRandomCodeOne(String charset, int len) { int index = new Random().nextInt(len); return String.valueOf(charset.charAt(index)); } private static String replace(String str, String olds, String news) { if (null == str) { return ""; } while (str.indexOf(olds) > -1) { str = str.replace(olds, news); } return str; } }