当前位置: 首页 > news >正文

java登录字符串封装_JAVA的随机的字符串的封装(基本上够用了)

1 importjava.util.Random;2

3 public classUranDom {4 /**

5 * 以下均为random函数6 * **/

7 private staticRandom random;8 private static longseed;9 static{10 seed=System.currentTimeMillis();11 random=newRandom(seed);12 }13

14 privateUranDom(){}15

16 /**

17 * 获取种子值18 *@returnlong 随机种子生成器种子值19 *20 **/

21 public static longgetSeed(){22 returnseed;23 }24

25 /**

26 * 随机返回0到1之间的实数[0,1)27 *@returndouble 随机数28 *29 * **/

30 public static doubleuniform(){31 returnrandom.nextDouble();32 }33

34 /**

35 * 随机0到N-1的整数[0,N)36 *@paramN 上限37 * @retrun int 随机数38 * **/

39 public static int uniform(intN){40 returnrandom.nextInt(N);41 }42 /**

43 * 随机返回a到b-1之间的整数44 *@parama 下限45 *@paramb 上限46 *@returnint 随机数47 *48 * **/

49 public static int uniform(int a,intb){50 return a+uniform(b-1);51 }52

53 /**

54 * 随机返回a到b之间的实数55 *@parama 下限56 *@paramb 上限57 *@returnint 随机数58 *59 * **/

60

61 public static double uniform(double a,doubleb){62 return a+uniform()*(b-a);63 }64

65 /***66 *@paramtype ==1 数字67 *@paramtype ==2 纯小写字母68 *@paramtype ==3 纯大写字母69 *@paramtype ==4 数字和小写字母混排70 *@paramtype ==5 数字和大写字母混排71 *@paramtype ==6大写和小写字母混排72 *@paramtype ==7 大小写和数字混排73 *@paramlength 长度74 *@paramboth 只有length>2且type>4时生效,意思是,两者或以上都必须有一个以上的类型75 * **/

76 public static String RandString(int type,int length,booleanboth){77 StringBuffer buffer=newStringBuffer();78 StringBuffer sb=null;79 String number="0123456789";80 String sletter="abcdefghijklmnopqrstuvwxyz";81 String bletter="ABCDEFGHIJKLMNOPQRSTUVWXYZ";82

83 //处理type

84 switch(type){85 case 1://纯数字

86 buffer.append(number);87 sb=newStringBuffer();88 while(length>0){89 sb.append(buffer.charAt(UranDom.uniform(10)));90 length--;91 }92 break;93 case 2://纯小写

94 buffer.append(sletter);95 sb=newStringBuffer();96 while(length>0){97 sb.append(buffer.charAt(UranDom.uniform(26)));98 length--;99 }100 break;101 case 3://纯大写

102 buffer.append(bletter);103 sb=newStringBuffer();104 while(length>0){105 sb.append(buffer.charAt(UranDom.uniform(26)));106 length--;107 }108 break;109 case 4://数字+小写

110 buffer.append(number+sletter);111 if(!both){112 sb=newStringBuffer();113 while(length>0){114 sb.append(buffer.charAt(UranDom.uniform(36)));115 length--;116 }117 }else {//两者必有其一

118 sb=newStringBuffer();119 int ra1=UranDom.uniform(length);120 int ra2=UranDom.uniform(length);121 //如果重复则重新随机

122 while(ra2==ra1){123 ra2=UranDom.uniform(length);124 }125 //随机第一个和第二个的数值

126 char c1=(char)('0'+UranDom.uniform(10));127 char c2=(char)('a'+UranDom.uniform(26));128

129 while(length>0){130 if(length==ra1){131 sb.append(c1);132 }133 else if(length==ra2)134 {135 sb.append(c2);136 }137 else sb.append(buffer.charAt(UranDom.uniform(36)));138 length--;139 }140 }141 break;142 case 5://数字+大写

143 buffer.append(number+bletter);144 if(!both){145 sb=newStringBuffer();146 while(length>0){147 sb.append(buffer.charAt(UranDom.uniform(36)));148 length--;149 }150 }else {//两者必有其一

151 sb=newStringBuffer();152 int ra1=UranDom.uniform(length);153 int ra2=UranDom.uniform(length);154 //如果重复则重新随机

155 while(ra2==ra1){156 ra2=UranDom.uniform(length);157 }158 //随机第一个和第二个的数值

159 char c1=(char)('0'+UranDom.uniform(10));160 char c2=(char)('A'+UranDom.uniform(26));161

162 while(length>0){163 if(length==ra1){164 sb.append(c1);165 }166 else if(length==ra2)167 {168 sb.append(c2);169 }170 else sb.append(buffer.charAt(UranDom.uniform(36)));171 length--;172 }173

174 }175 break;176 case 6://大写+小写

177 buffer.append(sletter+bletter);178 if(!both){179 sb=newStringBuffer();180 while(length>0){181 sb.append(buffer.charAt(UranDom.uniform(52)));182 length--;183 }184 }else {//两者必有其一

185 sb=newStringBuffer();186 int ra1=UranDom.uniform(length);187 int ra2=UranDom.uniform(length);188 //如果重复则重新随机

189 while(ra2==ra1){190 ra2=UranDom.uniform(length);191 }192 //随机第一个和第二个的数值

193 char c1=(char)('a'+UranDom.uniform(26));194 char c2=(char)('A'+UranDom.uniform(26));195

196 while(length>0){197 if(length==ra1){198 sb.append(c1);199 }200 else if(length==ra2)201 {202 sb.append(c2);203 }204 else sb.append(buffer.charAt(UranDom.uniform(52)));205 length--;206 }207 }208 break;209 case 7:210 buffer.append(number+sletter+bletter);211 if(!both){212 sb=newStringBuffer();213 while(length>0){214 sb.append(buffer.charAt(UranDom.uniform(62)));215 length--;216 }217 }else {//三者必有其一

218 sb=newStringBuffer();219 int ra1=UranDom.uniform(length);220 int ra2=UranDom.uniform(length);221 int ra3=UranDom.uniform(length);222 //如果重复则重新随机

223 while(ra2==ra1){224 ra2=UranDom.uniform(length);225 }226 while(ra3==ra2||ra3==ra1){227 ra3=UranDom.uniform(length);228 }229 //随机第一个和第二个的数值

230 char c1=(char)('0'+UranDom.uniform(10));231 char c2=(char)('A'+UranDom.uniform(26));232 char c3=(char)('a'+UranDom.uniform(26));233 System.out.println(c1+c2+c3);234 while(length>0){235 if(length==ra1){236 sb.append(c1);237 }238 else if(length==ra2)239 {240 sb.append(c2);241 }242 else if(length==ra3){243 sb.append(c3);244 }245 else sb.append(buffer.charAt(UranDom.uniform(62)));246 length--;247 }248 break;249 }250

251 }

相关文章:

  • java统一管理文字_为了统一管理组件和容器,Java为所有组件类定义的超类
  • django mysql 分表_Django数据库分表
  • php aws_Amazon S3 客户端加密与 AWS SDK for PHP 版本 3 - 适用于 PHP 的 AWS 开发工具包...
  • Php公钥加密data是空,实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
  • java做节奏大师,《节奏大师》高手必修之路 亲测攻略_iOS游戏频道_97973手游网
  • 注册php tp5,thinkphp5 开发会员注册与登录功能
  • php xml序列化,深入理解:XML与对象的序列化与反序列化
  • matlab ceil,Matlab中的取整函数fix, floor, ceil与round
  • php 创建mssql 表,在php表中显示MSSQL选择数据
  • matlab 热图,基于表格数据创建热图
  • getlocation.php,关于微信小程序 location API接口的解析
  • php 调用未定义方法,关于php:Laravel调用未定义的方法create()和save()
  • eclipse java 源代码,ECLIPSE 调试java 源码
  • excel按条件查询mysql,excel多个表格满足条件的数据库-excel表格满足多条件的数据汇总(vlookup?)...
  • php多张图片制作成视频教程,PS如何将一张图片做成多张图片叠加效果
  • 【React系列】如何构建React应用程序
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 230. Kth Smallest Element in a BST
  • create-react-app项目添加less配置
  • Java基本数据类型之Number
  • leetcode388. Longest Absolute File Path
  • markdown编辑器简评
  • nginx 负载服务器优化
  • Python爬虫--- 1.3 BS4库的解析器
  • Redux 中间件分析
  • V4L2视频输入框架概述
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 力扣(LeetCode)56
  • 每天10道Java面试题,跟我走,offer有!
  • 如何实现 font-size 的响应式
  • 如何优雅地使用 Sublime Text
  • 如何在 Tornado 中实现 Middleware
  • 实战|智能家居行业移动应用性能分析
  • 思否第一天
  • 项目管理碎碎念系列之一:干系人管理
  • 协程
  • 因为阿里,他们成了“杭漂”
  • Spring第一个helloWorld
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)linux 命令大全
  • .bat批处理(六):替换字符串中匹配的子串
  • .form文件_一篇文章学会文件上传
  • .net core Swagger 过滤部分Api
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net6+aspose.words导出word并转pdf
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @Transaction注解失效的几种场景(附有示例代码)