java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java随机生成字符串

Java随机生成字符串的四种方式例子

作者:海深不见鲸

这篇文章主要给大家介绍了关于Java随机生成字符串的四种方式,随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串、数字,文中给出了详细的代码示例,需要的朋友可以参考下

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类

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

示例代码:

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包含到您的项目中。

<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-lang3</artifactId>
   <version>3.9</version>
</dependency>

总结 

到此这篇关于Java随机生成字符串的四种方式的文章就介绍到这了,更多相关Java随机生成字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文