`
joeblow
  • 浏览: 177859 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个产生随机字符串的类

    博客分类:
  • Java
阅读更多
经常要用到java来产生随机字符串,感觉org.apache.commons.lang.RandomStringUtils还是不够用,比如不能按照指定格式来产生随机串,因此自己写了一个RandomString类,放在这里记录一下。源文件在用法简介的后面。

一、用法简介:
//产生4位的,由数字和大写字母组成的随机字符串;
String s1=RandomString.get(4);

//产生5位的,由数字组成的随机字符串;
String s2=RandomString.getNum(5);

//产生6位的,由十六进制字符组成的随机字符串;
String s3=RandomString.getHex(6);

//产生如下格式的随机字符串“{E3-K91Z}”,“?”表示一个占位符;
String s4=RandomString.get("{??-????}");

//产生如下格式的随机字符串“Are you W5B?”,可以自己指定临时占位符,这里用“#”;
String s5=RandomString.get("Are you ###?",'#');

二、源文件:
public class RandomString {
    private static final String src_number = "0123456789";
    private static final String src_lower = "abcdefghijklmnopqrstuvwxyz";
    private static final String src_upper = src_lower.toUpperCase();
    private static final String src_hex_lower = "0123456789abcdef";
    private static final String src_hex_upper = src_hex_lower.toUpperCase();
    private static final String esc_char = "?";
 
    public static String get(int size) {
        StringBuffer r = new StringBuffer(size);
        String src = src_number + src_upper;
        for (int i = 0; i < size; i++) {
            r.append(getRandomChar(src));
        }
        return r.toString();
    }
 
    public static String get(String format) {
        StringBuffer r = new StringBuffer(format.length());
        String src = src_number + src_upper;
        for (int i = 0; i < format.length(); i++) {
            String curr = String.valueOf(format.charAt(i));
            if (curr.equalsIgnoreCase(esc_char)) {
                r.append(getRandomChar(src));
            } else {
                r.append(curr);
            }
        }
        return r.toString();
    }
 
    public static String get(String format, char esc) {
        StringBuffer r = new StringBuffer(format.length());
        String src = src_number + src_upper;
        for (int i = 0; i < format.length(); i++) {
            String curr = String.valueOf(format.charAt(i));
            if (curr.equalsIgnoreCase(String.valueOf(esc))) {
                r.append(getRandomChar(src));
            } else {
                r.append(curr);
            }
        }
        return r.toString();
    }
 
    public static String getNum(int size) {
        StringBuffer r = new StringBuffer(size);
        String src = src_number;
        for (int i = 0; i < size; i++) {
            r.append(getRandomChar(src));
        }
        return r.toString();
    }
 
    public static String getNum(String format) {
        StringBuffer r = new StringBuffer(format.length());
        String src = src_number;
        for (int i = 0; i < format.length(); i++) {
            String curr = String.valueOf(format.charAt(i));
            if (curr.equalsIgnoreCase(esc_char)) {
                r.append(getRandomChar(src));
            } else {
                r.append(curr);
            }
        }
        return r.toString();
    }
 
    public static String getNum(String format, char esc) {
        StringBuffer r = new StringBuffer(format.length());
        String src = src_number;
        for (int i = 0; i < format.length(); i++) {
            String curr = String.valueOf(format.charAt(i));
            if (curr.equalsIgnoreCase(String.valueOf(esc))) {
                r.append(getRandomChar(src));
            } else {
                r.append(curr);
            }
        }
        return r.toString();
    }
 
    public static String getHex(int size) {
        StringBuffer r = new StringBuffer(size);
        String src = src_hex_upper;
        for (int i = 0; i < size; i++) {
            r.append(getRandomChar(src));
        }
        return r.toString();
    }
 
    public static String getHex(String format) {
        StringBuffer r = new StringBuffer(format.length());
        String src = src_hex_upper;
        for (int i = 0; i < format.length(); i++) {
            String curr = String.valueOf(format.charAt(i));
            if (curr.equalsIgnoreCase(esc_char)) {
                r.append(getRandomChar(src));
            } else {
                r.append(curr);
            }
        }
        return r.toString();
    }
 
    public static String getHex(String format, char esc) {
        StringBuffer r = new StringBuffer(format.length());
        String src = src_hex_upper;
        for (int i = 0; i < format.length(); i++) {
            String curr = String.valueOf(format.charAt(i));
            if (curr.equalsIgnoreCase(String.valueOf(esc))) {
                r.append(getRandomChar(src));
            } else {
                r.append(curr);
            }
        }
        return r.toString();
    }
 
    private static final String getRandomChar(String src) {
        if (null==src||"".equals(src)) {
            return "";
        }
        return String.valueOf((src.charAt((int) (Math.random() * src.length()))));
    }
}
分享到:
评论

相关推荐

    Java 生成随机字符串数组的实例详解

    下面是一个详细的实例详解,介绍了生成随机字符串数组的步骤和相关知识点。 知识点1:String String是Java中的一种基本数据类型,用于表示字符串。String类提供了许多有用的方法,例如substring()、indexOf()、...

    生成随机字符串(字符串,数字)

    接下来,我们来看如何生成随机字符串。C#提供了多种方法来生成包含字母、数字或其他字符的字符串。一个常见的方法是使用`char`类型的`ToCharArray`方法,结合随机数生成器选择字符集内的字符。例如,生成一个由小写...

    Java获取随机字符串

    Java提供了多种方法来生成随机字符串,主要包括使用`java.util.Random`类和`java.security.SecureRandom`类。其中,`SecureRandom`类提供了一种更加安全的方式来生成随机数,它适合于安全性要求较高的应用场合。 ##...

    C#随机字符串生成代码

    在测试场景中,`Net60.test`可能是一个.NET 6.0环境下的测试项目,用于验证上述生成随机字符串功能的正确性和性能。在编写测试时,可以使用`Assert.AreEqual()`等方法检查生成的字符串是否符合预期,也可以通过大量...

    生成指定长度的随机字符串

    Java也有类似的方法,可以使用`java.util.Random`类和`Character`类来生成随机字符串: ```java import java.util.Random; public class RandomStringGenerator { public static String generate(int length) { ...

    随机字符串生成器

    总结来说,随机字符串生成器是信息技术中的一个重要工具,它利用.NET Framework提供的功能,根据用户的定制需求,生成多样化的随机字符串。这个工具的灵活性和实用性使其在多种场景下都大有用途,而其保存操作设定的...

    随机字符串生成工具.zip

    本项目提供了一个基于C#开发的随机字符串生成工具,包含完整的源代码,允许用户根据自己的实际需求进行定制。下面我们将深入探讨这个工具的工作原理、C#编程语言的相关知识点以及如何利用它来提升工作效率。 首先,...

    C# 生成随机字母字符串

    首先,要生成随机字符串,我们需要使用C#中的`System.Random`类来生成随机数。这个类提供了多种方法来生成指定范围内的整数,我们可以利用这些整数来选择字母表中的字符。在ASCII码中,小写字母的范围是97('a')到...

    生成随机字符串的方法

    此方法是最常见的一种生成随机字符串的方式,它首先定义一个包含所有可能字符的字符串池,然后通过随机数生成器从中选择字符来构建随机字符串。 **代码示例:** ```java public String make() { String radStr = ...

    Vs2005 WinForm开发产生随机字符、字符串、随机数

    - **字符串生成**:注释部分展示了如何通过循环多次调用`Random`类来生成指定长度的随机字符串。 ##### 3. 示例应用 假设我们需要从“a,b,c,d,e,f”中随机选择一个字符: ```csharp NewMethodstrRnd("a,b,c,d,e,f...

    java随机生成字符串(字符随机生成类 生成随机字符组合).docx

    本文档详细介绍了一种基于Java的随机字符串生成方法,通过定义一个枚举类型来区分不同的字符串组成规则,并提供了一个简单的接口来生成随机字符串。这种方法具有高度的灵活性和可扩展性,可以轻松地根据实际需求进行...

    生成随机字符串1

    在IT行业中,生成随机字符串是一项常见的任务,尤其是在创建唯一标识符、加密、安全令牌或测试数据时。在Java中,我们可以使用多种方法来生成随机字符串。这里我们将详细讨论一种常见的方式,即通过UUID类来生成。 ...

    Java实现产生随机字符串主键的UUID工具类

    Java实现产生随机字符串主键的UUID工具类是指使用Java语言来生成唯一的标识符,用于表示资源、记录或对象的身份。 UUID( Universally Unique Identifier,通用唯一标识符)是一种常用的标识符格式,由32个十六进制...

    生成随机字符串(java代码).docx

    本示例通过使用`java.util.Random`类生成随机数,并结合`StringBuilder`类构建字符串,实现了生成随机字符串的功能。这种实现方式简单而高效,适用于多种场景。通过调整`CHARACTERS`中的字符集和`...

    as3.0 生成随机字符串类

    内有详细的使用介绍,可以任意生成你想要的字符串,包括验证码

    获取同时含有数字、大写字母、小写字母的随机字符串

    在IT领域,生成随机字符串是一项常见的任务,尤其在密码生成、数据填充或安全测试中。在给定的标题和描述中,我们关注的是如何创建一个包含数字、大写字母和小写字母的随机字符串,且长度可指定。这样的字符串通常...

    随机生成字符串工具类

    规定随机字符串 定长的字符串 10位随机数和6位毫秒时间等

    php的字符串类.zip

    而这个字符串类可能提供了一个便捷的静态方法,允许开发者指定字符串长度和字符集,一键生成所需的随机字符串。 其次,单次截取字符串是另一个常见的需求。PHP中的`substr()`函数就是用来实现这一功能的,但自定义...

    生成随机字符串和验证码的类的PHP实例

    这个实例提供了一个名为`RandCheckCode`的PHP类,它包含了两个主要功能:`get_code()`用于生成随机字符串,而`create_check_image()`则用于创建图形验证码。 `get_code()`函数是一个关键部分,它的作用是根据指定的...

    C#生成不重复随机字符串类

    总结来说,C#生成不重复随机字符串类通过巧妙地结合时间和类变量作为随机数种子,以及对数字和字母的条件判断,实现了多样化且不重复的字符串生成。这对于创建验证码、ID或任何需要独特标识符的场景都非常有用。...

Global site tag (gtag.js) - Google Analytics