相关文章推荐
字母数字字符串包含数字和字母字符。在 Java 中,在许多情况下都使用字母数字字符串。例如,在用户注册应用程序后生成密码;在生成主键条目以标识数据库中的元素时;生成会话 ID 等。

本文将讨论四种在 Java 中生成随机字母数字字符串的方法。

正则表达式 Math.random() 方法 Charset Apache Commons Lang 在 Java 中使用正则表达式生成随机字符串 此方法很简单,给出了一个包含小写字符和数字的大写字母数字字符串。

第一步是取 0 到 256 之间的字符。

第二步是过滤这些字符,留下我们想要包含在随机字符串中的元素。请记住,我们想要留下的字符是 0-9 和 A-Z,所以我们可以创建一个过滤器来删除所有其他的字符。

下一步是选择随机字符并将它们添加到 StringBuffer 中。然后我们使用 toString() 方法从 StringBuffer 中创建一个字符串。

下面是一个示例代码。

import java.nio.charset.* ; import java.util.* ; class GenerateAlphaNumericString { static String getRandomString ( int i ) // bind the length bytearray = new byte [ 256 ]; byte [] bytearray ; String mystring ; StringBuffer thebuffer ; String theAlphaNumericS ; new Random (). nextBytes ( bytearray ); mystring = new String ( bytearray , Charset . forName ( "UTF-8" )); thebuffer = new StringBuffer (); //remove all spacial char theAlphaNumericS = mystring . replaceAll ( "[^A-Z0-9]" , "" ); //random selection for ( int m = 0 ; m < theAlphaNumericS . length (); m ++) { if ( Character . isLetter ( theAlphaNumericS . charAt ( m )) && ( i > 0 ) || Character . isDigit ( theAlphaNumericS . charAt ( m )) && ( i > 0 )) { thebuffer . append ( theAlphaNumericS . charAt ( m )); i --; // the resulting string return thebuffer . toString (); public static void main ( String [] args ) // the random string length int i = 15 ; // output System . out . println ( "A random string: " + getRandomString ( i )); A random string : 4H4V7FWP8ZUKEGW 在 Java 中使用 Math.random() 方法生成随机字母数字字符串 它涉及手动创建一个包含所有可能字符的字符串。然后,通过从先前创建的字符串中选择字符和数字,来创建一个定义长度的随机字符串。

首先,我们定义了我们需要的两个变量- StringBuilder String String 将包含所有大写字母和数字 0-9。该字符串不应有符号或空格,因为该字符串中字符的索引将用于随机选择字符。

其次,定义限于我们要创建的随机字符串的长度的迭代。

第三,使用 Math.random() 方法生成一个随机索引。从先前创建的字符串中获取字符,该字符是随机生成的索引位置,并将其附加到 StringBuilder 。然后,我们可以使用 toString() 方法从 StringBuilder 中获取随机字符串。

下面是一个示例代码。

class AlphaNumericStringGenerator { static String getRandomString ( int i ) String theAlphaNumericS ; StringBuilder builder ; theAlphaNumericS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" ; //create the StringBuffer builder = new StringBuilder ( i ); for ( int m = 0 ; m < i ; m ++) { // generate numeric int myindex = ( int )( theAlphaNumericS . length () * Math . random ()); // add the characters builder . append ( theAlphaNumericS . charAt ( myindex )); return builder . toString (); public static void main ( String [] args ) // the random string length int i = 15 ; // output System . out . println ( "A random string: " + getRandomString ( i )); A random string: BCQJPZLG3OC1MQD 使用 Charset 生成 我们使用 Charset,它位于 java.nio.charset 包中。字符集代表字符集,并表示字符和数字之间的映射。下面说明使用 Charset 创建字母数字字符串的过程。

第一步是获取 0 到 256 之间的字符。然后将 Random() 方法应用于上面的字符数组。第三步是通过迭代检查每个字符是字母还是数字。如果是它们中的任何一个,我们都将该字符添加到字符串的末尾,直到达到定义的长度。使用 toString() 方法将附加在 StringBuilder 上的字符转换为所需的字符串。

下面是一个示例代码。

import java.nio.charset.* ; import java.util.* ; class AlphaNumericStringGenerator { static String getRandomString ( int i ) byte [] bytearray ; String mystring ; StringBuffer thebuffer ; bytearray = new byte [ 256 ]; new Random (). nextBytes ( bytearray ); mystring = new String ( bytearray , Charset . forName ( "UTF-8" )); // Create the StringBuffer thebuffer = new StringBuffer (); for ( int m = 0 ; m < mystring . length (); m ++) { char n = mystring . charAt ( m ); if ((( n >= 'A' && n <= 'Z' ) || ( n >= '0' && n <= '9' )) && ( i > 0 )) { thebuffer . append ( n ); i --; // resulting string return thebuffer . toString (); public static void main ( String [] args ) // the random string length int i = 15 ; // output System . out . println ( "A random string: " + getRandomString ( i )); A random string: XKT0JAHPRPZ6A3X 使用 Apache Commons Lang 这是最容易实现的方法,因为由第三方来处理实现,在这种情况下是 Apache 程序包。

Apache Commons Lang 软件包提供了许多与 Java 中的字符串操作有关的帮助程序实用程序。由于它是第三方,因此必须首先将其添加为项目中的依赖项。

我们可以使用 RandomStringUtils 类 来生成随机字符串。此类有三种可以提供随机字符串的方法:

RandomStringUtils.randomNumeric :创建一个指定长度的随机字符串。 RandomStringUtils.randomAlphabetic :创建一个随机的字母字符串,包含大小写字符 RandomStringUtils.randomAlphanumeric :创建具有指定长度的随机字母数字字符串。 下面是一个代码示例。

import org.apache.commons.lang3.RandomStringUtils ; public class Index { public static void main ( String [] args ){ System . out . println ( RandomStringUtils . randomAlphanumeric ( 15 ) toUpperCase ();); RM0WMYOKN7AS0KA RandomStringUtils.randomAlphanumeric 直接实现随机字母数字,并且可以选择使用小写字母或大写字母或同时使用两者。当你不想在代码中实现字符串生成时,这是一种有效的方法。Apache 库功能强大,并具有其他许多功能,例如基本的数值方法,并发性和对象反射。

  • Java Struts2 框架 java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY 错误解决
  • Gson -- Java-JSON 序列化和反序列化入门
  • 如何在 Java 中检查或检测数组中的重复元素
  • Java Struts 框架 java.lang.ClassNotFoundException: XXX.dispatcher.FilterDispatcher 错误
  • 关于 Java 中的松散耦合你需要知道的一切
  • 处理 Java 异常时应避免的 7 个常见错误
  • Java 中的 HashMap 和 Hashtable 有什么区别?
  • Java中为什么wait,notify 和 notifyAll 在同步块或方法中调用
  • Java中 HashMap 的工作原理
  •  
    推荐文章