博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中获取字母和数字的组合
阅读量:6401 次
发布时间:2019-06-23

本文共 4603 字,大约阅读时间需要 15 分钟。

前言

在开发的过程中,我们经常会用到字母和数字任意组合的情况,在这给小伙伴们提供一个工具类,供小伙伴们参考;文档要感谢 @海棠--依旧的合作

代码如下

package com.ccytsoft.wkc.util;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 生成随机码 * 

* 获取大写字母,小写字母和数字的任意组合的随机码 * * @author kuangxiang(kuangxiang666@yeah.net) * @Date 15:20 2017/12/13 */public class AlgorithmUtil { /** *获取随机编码 *

* 获取大写字母,小写字母和数字的任意组合的随机码 * * @param length 要生成字符串的长度 * @param isPureDigits 生成的随机码是否是纯数字 true:表示存数字,false:表示纯字母,null:表示字母和数字均可 * @param isUpperCase 生成的随机码是否大写 如果isPureDigits的值不为true时,此值有效 true:表示大写,false:表示小写,null:表示大小写都可以 * @param isTogether 字母和数字是否必须同时存在 isPureDigits的值为null时,此值有效 true:是,false:否 * * @return 生成的字符窜 */ public static String getCode(int length,Boolean isPureDigits,Boolean isUpperCase,boolean isTogether) { String val = ""; Random random = new Random(); for(int i = 0; i < length; i++){ //是否需要纯数字或者纯字母 String charOrNum = ""; if(isPureDigits!=null){ charOrNum= isPureDigits ? "num":"char"; }else{ charOrNum=random.nextInt(2) % 2 == 0 ? "char" : "num"; // 输出字母还是数字 } //获取字符或者数字 if("char".equalsIgnoreCase(charOrNum)) { val += (char) (getChoice(isUpperCase, random) + random.nextInt(26)); }else if("num".equalsIgnoreCase(charOrNum)) { // 数字 val += String.valueOf(random.nextInt(10)); } //字符和数字是否需要同时存在 if(isPureDigits==null&isTogether){ if(val.length()==length-1){ if(isPureAlphabet(val)){ val+=String.valueOf(random.nextInt(10)); break; } if(isPureDigits(val)){ val += (char) (getChoice(isUpperCase, random) + random.nextInt(26)); break; } } } } return val; } /** * 获取随机编码的集合 * * @param length 随机编码的长度 * @param num 想要获取书籍编码的个数 * @param isPureDigits 是否是纯数字 true:表示存数字,false:表示纯字母,null:表示字母和数字均可 * @param isUpperCase 是否大写 ,如果生成的字符串中有字母,可以设置值,true:表示大写,false:表示小写,null:表示大小写都可以 * @param isTogether 字母和数字是否必须同时存在 true:是,false:否 * @return */ public static List

genCodes(int length, long num,Boolean isPureDigits,Boolean isUpperCase,boolean isTogether){ List
results=new ArrayList
(); for(int j=0;j
= 0 && i < str.length) { pwd.append(str[i]); count++; } } return pwd.toString(); } /** * 获取字母对应的数值 * * @param isUpperCase 是否大写 ,如果生成的字符串中有字母,可以设置值,true:表示大写,false:表示小写,null:表示大小写都可以 * @param random 随机数 * * @return 数值 */ private static int getChoice(Boolean isUpperCase, Random random) { int choice=0; // 字符串 if(isUpperCase!=null){ choice = isUpperCase ? 65 : 97; }else { choice= random.nextInt(2) % 2 == 0 ? 65 : 97; //取得大写字母还是小写字母 } return choice; } /** * 是否是纯数字 * * @param str 需要检查的字符窜 * @return true:是 false:否 */ private static boolean isPureDigits(String str) { // String regExp = // "^[A-Za-z]+(([0-9]+[A-Za-z0-9]+)|([A-Za-z0-9]+[0-9]+))|[0-9]+(([A-Za-z]+[A-Za-z0-9]+)|([A-Za-z0-9]+[A-Za-z]+))$"; String regExp = "^([0-9]+)$"; Pattern pat = Pattern.compile(regExp); Matcher mat = pat.matcher(str); return mat.matches(); } /** * 是否是纯字母 * * @param str 需要检查的字符窜 * * @return true :是 false:否 */ private static boolean isPureAlphabet(String str) { // String regExp = // "^[A-Za-z]+(([0-9]+[A-Za-z0-9]+)|([A-Za-z0-9]+[0-9]+))|[0-9]+(([A-Za-z]+[A-Za-z0-9]+)|([A-Za-z0-9]+[A-Za-z]+))$"; String regExp = "^([A-Za-z]+)$"; Pattern pat = Pattern.compile(regExp); Matcher mat = pat.matcher(str); return mat.matches(); } /** * 测试类 * * @param args 参数 * */ public static void main(String[] args) { boolean pureDigits1 = isPureDigits("6003l8"); System.out.println("pureDigits的值"+pureDigits1); // TODO Auto-generated method stub List
results=genCodes(6,100,null,false,true); System.out.println("results的值"+results); }}

转载于:https://www.cnblogs.com/nikeodong/p/8214504.html

你可能感兴趣的文章
Html5 の 微信飞机大战
查看>>
实现winform DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部
查看>>
maven安装及maven项目导入流程
查看>>
iOS版本的Google Earth发布了5个3D城市图形
查看>>
属性页面Flexbox布局的简单演示之二
查看>>
如何在Windows上配置EBS R12.1.3的OAF开发环境
查看>>
WPF 如何加载图片
查看>>
openldap---ldapsearch使用
查看>>
Leetcode: Palindrome Partitioning II
查看>>
Eclipse安装SVN插件
查看>>
ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录
查看>>
多媒体开发之rtsp---rtsp client 端的实现
查看>>
poj 1147 Binary codes
查看>>
C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 防止暴力破解密码、提高大型信息系统安全...
查看>>
java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException
查看>>
重写Override ToString()方法
查看>>
052 kafka对topic的增删改查操作
查看>>
无法创建链接服务器 "ORCL" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例 (错误:7302)...
查看>>
Ping检测工具(QQ皮肤实现)
查看>>
C# 线程手册 第三章 使用线程 手动同步
查看>>