题目:随机产生字符串,字符串中的字符只能由特殊字符 (!@#$%), 大写字母(A-Z),小写字母(a-z)以及数字(0-9)组成,且每种字符至少出现一次。
这样产生字符串的方式可以应用到如下场景,比如,我们有一个应用就是添加用户完毕之后,发邮件给指定用户包括一个长度为11位的初始化密码。
1. 我们先来定义一个包含这四种字符类型的char数组
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(); }
详细代码如下
import java.util.Random; 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); } }
2. 根据步骤1中产生的字符数组,随机产生一个字符串,判断其是否至少包含一个特殊字符、一个数字、一个小写字母以及一个大写字母,如果不是,则重新产生一个新的随机字符串直到产生符合条件的随机字符串为止
在这里,我们使用正则表达式的方式验证字符串是否符合要求,正则表达式为.*(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%]).*
测试代码如下:
public class RandomAlphaNumericGeneratorTest { 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(); } }
某一次运行的结果如下:
u7YMTR4!o$! H004vVb!W9Z RLnhzUpYl6$ @UFDysu7qBa %2edSPri$e2 KY9!HPtcWlX ciVns$DMIN9 j6BU%heDIHp Nmn8747#$Vd oLp@DDUxH8d
本文原文地址http://thecodesample.com/?p=935
更多实例 请访问 http://thecodesample.com/
相关推荐
### Python 实现生成字符串大小写字母和数字的各种组合 在Python编程中,有时我们需要生成包含大小写字母和数字的特定格式的字符串。这种需求常见于密码生成器、验证码生成等场景。本文通过一系列实例,详细介绍...
在给定的标题和描述中,我们关注的是如何创建一个包含数字、大写字母和小写字母的随机字符串,且长度可指定。这样的字符串通常具有较高的复杂度,能提供更好的安全性。 生成这种随机字符串的方法通常涉及编程语言中...
LabVIEW自动检测字符串的大小写字母、数字、空格和特殊字符
随机产生字符串,字符串中的字符只能由特殊字符(&@#$%*),大写字母(A-Z),小写字母(a-z)以及数字(0-9)组成,且每种字符至少出现一次。这样产生字符串的方式可以应用到如下场景,比如,我们有一个应用就是添加用户完毕...
本文将围绕“判断密码必须包括大小写字母、特殊字符、数字且长度限制在8到16位之间”这一需求展开,详细介绍如何通过编程实现这一功能,并分析其中涉及的关键技术点。 #### 二、密码复杂度要求 根据题目描述,一个...
可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持可选字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置),即在选择的字符范围内去实现随机字符串生成,支持特殊字符生成,...
以下是一个简单的示例代码,用于生成随机大小写字母字符串: ```csharp using System; public static string GenerateRandomString(int length) { Random random = new Random(); const string chars = ...
在易语言中实现随机取大小写字母的功能,对于初学者来说是一项实用的练习,可以帮助他们掌握基本的随机数生成和字符串操作。 在易语言中,随机数的生成通常依赖于“随机数”函数或模块。这个功能可以用于产生一定...
这个函数首先定义了可能的字符集,包括所有大小写字母和数字,然后使用`random.sample`函数从这个字符集中随机抽取指定长度的字符,确保每个字符只出现一次。最后,使用`join`将这些字符连接成一个字符串。 如果...
在Java编程语言中,统计一个字符串中特定字符的出现次数是一项常见的任务,这对于文本分析、数据处理和算法实现都有很重要的应用。在这个问题中,我们需要编写一个程序来计算字符串中大写"A"和小写"a"的总数。下面将...
输入一个字符串,统计出这个字符串的英文大写字母、小写字母、数字、空格以及其它字符的个数
随机生成8位字符密码,包括1位特殊字符,1位数字,1位小写字母,1位大写字母,其余4位随机
利用汇编语言写成的程序 最高支持输入20位任意字符串,并且统计这一串字符串里的数字,大写字母,小写字母,特殊符号的个数 这是一个简单的程序,是学生党学完自己写的,请多多包涵。
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。 【输入】 两行,每行包含一个字符串。 【输出】 若两个字符串相等,输出YES,否则输出NO。 【输入样例】 a A bb BB ccc CCC Aa ...
同时,如果你需要生成更安全的密码,还可以考虑增加复杂性,比如要求必须包含大小写字母、数字和特殊字符的组合,或者使用更强的随机数生成算法。 这个压缩包中的"随机生成32位字串"很可能就是一个实现这个功能的VB...
忽略字段的首字母大小写,将json字符串转成javabean对象,解决Java对象中属性中首字母大写而取不到值(取到的值为空)的问题 忽略字段的首字母大小写,将json字符串转成List,解决Java对象中属性中首字母大写而取不...
### 编写一个程序,实现字符串大小写的转换并倒序输出 #### 任务目标 本任务的目标是通过编程实现一个功能:对输入的字符串进行大小写转换并倒序输出。具体来说,对于输入的字符串中的每个字符,如果是大写字母,则...
在本项目中,我们关注的是如何利用LabVIEW来检测和统计字符串中的不同字符类型,包括大小写字母、数字、空格以及特殊字符。这个功能在数据处理、文本分析或用户输入验证等场景中十分常见。 首先,我们需要了解...