java产生多个随机字符串,Java随机生成字符串的4种方式

当您想要生成一个唯一的事务id或作为一个随机临时密码生成器,用户首次在网站上注册或创建防止自动输入的验证码时,通常需要生成随机的字符序列。

Java提供了许多不同的方法来编写随机字符串生成器应用程序,下面介绍几种方式。

UUID

UUID是由一组32位数的16进制数字所构成,故UUID理论上的总数为1632=2128,约等于3.4 x 1038。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。

java.util.UUID 类可用于生成UUID, 它的static randomUUID方法返回一个32个字符的字符串。

import java.util.UUID;

public class RandomStringGenerator{

public static void main(String[] args){

String randomString = usingUUID();

System.out.println("Random string is: " + randomString);

System.out.println("Random string of 8 characters is: "

+ randomString.substring(0, 8));

}

static String usingUUID(){

UUID randomUUID = UUID.randomUUID();

return randomUUID.toString().replaceAll("-", "");

}

}

注意randomUUID方法生成的字符串包含“-”。上面的示例通过使用空字符串替换了。

以上程序输出为:

Random string is: 923ed6ec4d04452eaf258ec8a4391a0f

Random string of 8 characters is: 923ed6ec

使用Math类

下面的算法可以使用这种方法生成一个固定长度的随机字符串。

初始化一个空字符串以保存结果。

创建大小写字母和数字的组合,以创建一组超级字符。

启动一个循环,该循环的count等于所需的随机字符串长度。

在每次迭代中,生成一个介于0和超集长度之间的随机数。

在步骤4中生成的数字索引处从步骤2中的字符串中提取字符,并将其添加到步骤1中的字符串中。

循环完成后,步骤1中的字符串将是一个随机字符串。

示例代码:

import java.util.Math;

public class RandomStringGenerator{

public static void main(String[] args){

String randomString = usingMath(10);

System.out.println("Random string is: " + randomString);

}

static String usingMath(int length){

String alphabetsInUpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

String alphabetsInLowerCase = "abcdefghijklmnopqrstuvwxyz";

String numbers = "0123456789";

// create a super set of all characters

String allCharacters = alphabetsInLowerCase + alphabetsInUpperCase + numbers;

// initialize a string to hold result

StringBuffer randomString = new StringBuffer();

// loop for 10 times

for (int i = 0; i < length; i++) {

// generate a random number between 0 and length of all characters

int randomIndex = (int)(Math.random() * allCharacters.length());

// retrieve character at index and add it to result

randomString.append(allCharacters.charAt(randomIndex));

}

return randomString.toString();

}

}

以上程序输出为:

Random string is: kqNG2SYHeF

Random string is: lCppqqUg8P

Random string is: GGiFiEP5Dz

这种方法使您能够更好地控制需要包含在随机字符串中的字符。例如,如果您不想要数字,那么就从超集中删除它们。如果您想要特殊字符,那么就在超集中添加一组特殊字符。

使用Random类

此方法与Math方法类似,即创建所有字符的超集,生成一个随机索引,并使用该索引处的字符创建最终字符串。

这种方法使用java.util.Random 类生成随机索引。

示例代码:

import java.util.Random;

public class RandomStringGenerator{

public static void main(String[] args){

String randomString = usingRandom(10);

System.out.println("Random string is: " + randomString);

}

static String usingRandom(int length){

String alphabetsInUpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

String alphabetsInLowerCase = "abcdefghijklmnopqrstuvwxyz";

String numbers = "0123456789";

// create a super set of all characters

String allCharacters = alphabetsInLowerCase + alphabetsInUpperCase + numbers;

// initialize a string to hold result

StringBuffer randomString = new StringBuffer();

// loop for 10 times

for (int i = 0; i < length; i++) {

// generate a random number between 0 and length of all characters

int randomIndex = random.nextInt(allCharacters.length());

// retrieve character at index and add it to result

randomString.append(allCharacters.charAt(randomIndex));

}

return randomString.toString();

}

}

以上程序输出为:

Random string is: TycOBOxITs

Random string is: 7LLWVbg0ps

Random string is: p6VyqdO6bT

您还可以使用java.util.SecureRandom类生成一个随机整数。它是java.util.Random的一个子类。

使用RandomStringUtils类

Apache Commons Lang库有一个org.apache.commons.lang.RandomStringUtils类,该类具有生成固定长度的随机字符串的方法。

它的方法可以生成只包含字母(随机字母)、数字(随机数字)或两者(随机字母数字)的随机字符串。

所有这些方法都接受一个整数参数,该参数表示它们将生成的字符串的长度。

示例代码:

import org.apache.commons.lang.RandomStringUtils;

public class RandomStringGenerator{

public static void main(String[] args){

// generate a random string of 10 alphabets

String randomString = RandomStringUtils.randomAlphabetic(10);

System.out.println("Random string of 10 alphabets: " + randomString);

randomString = RandomStringUtils.randomNumeric(10);

System.out.println("Random string of 10 numbers: " + randomString);

randomString = RandomStringUtils.randomAlphanumeric(10);

System.out.println("Random string of 10 alphanumeric characters: " + randomString);

}

}

以上程序输出为:

Random string of 10 alphabets: OEfadIYfFm

Random string of 10 numbers: 1639479195

Random string of 10 alphanumeric characters: wTQRMXrNY9

该类还有一个方法random,该方法接受一个整数(即要生成的字符串的长度)和一个char数组。生成的随机字符串仅由该数组中的字符组成。

通过根据构建工具添加以下依赖项,可以将Apache Commons Lang包含到您的项目中。

org.apache.commons

commons-lang3

3.9

希望这篇文章对你有所帮助。您知道其他随机字符串生成器方法吗?

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值