开发中遇到用户名随机生成的问题,总结了两个(中文版和英文版),相关方法在此,方便直接调用。
如下:
1 //自动生成名字(中文) 2 public static String getRandomJianHan(int len) { 3 String ret = ""; 4 for (int i = 0; i < len; i++) { 5 String str = null; 6 int hightPos, lowPos; // 定义高低位 7 Random random = new Random(); 8 hightPos = (176 + Math.abs(random.nextInt(39))); // 获取高位值 9 lowPos = (161 + Math.abs(random.nextInt(93))); // 获取低位值 10 byte[] b = new byte[2]; 11 b[0] = (new Integer(hightPos).byteValue()); 12 b[1] = (new Integer(lowPos).byteValue()); 13 try { 14 str = new String(b, "GBK"); // 转成中文 15 } catch (UnsupportedEncodingException ex) { 16 ex.printStackTrace(); 17 } 18 ret += str; 19 } 20 return ret; 21 } 22 23 //生成随机用户名,数字和字母组成, 24 public String getStringRandom(int length) { 25 26 String val = ""; 27 Random random = new Random(); 28 29 //参数length,表示生成几位随机数 30 for(int i = 0; i < length; i++) { 31 32 String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; 33 //输出字母还是数字 34 if( "char".equalsIgnoreCase(charOrNum) ) { 35 //输出是大写字母还是小写字母 36 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; 37 val += (char)(random.nextInt(26) + temp); 38 } else if( "num".equalsIgnoreCase(charOrNum) ) { 39 val += String.valueOf(random.nextInt(10)); 40 } 41 } 42 return val; 43 }