`
joeblow
  • 浏览: 176086 次
  • 性别: 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随机生成字符串(字符随机生成类 生成随机字符组合).docx

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

    as3.0 生成随机字符串类

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

    随机生成字符串工具类

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

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

    主要介绍了Java实现产生随机字符串主键的UUID工具类,涉及java随机数与字符串遍历、转换等相关操作技巧,需要的朋友可以参考下

    字符串生成工具

    一个小巧方便的工具: 用于随机生成字符串,支持字母,数字,符号,中文。

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

    主要介绍了C#生成不重复随机字符串类,涉及C#随机数与字符串的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    C#-字符串操作类

    、指定字符串分割字符串、指定字符串位置获取字符串、过滤SQL中非法字符、检查SQL语句中是否有非法关键字、随机字符串生成、唯一字符串生成、随机数字生成、唯一数字串生成、去除HTML标签、判断是否整型、判断是否...

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

    索性自己搞一个吧。 开始本节的php教程 吧,以下代码的实现,主要做到可以很好区分一个get_code(),另一个create_check_image...phpclass RandCheckCode{ /*函数名称:get_code() *作用:取得随机字符串 * 参数: 1、

    唯一标示字符串生成工具类

    我生成的最短为32位,剩下14位字符随机生成,而且每生成一个字符,会在前面字符中间找一个随机位置插入进去,这样不断的来回操作,知道位数达到三十二位为止,比如:U2013T1KU220KJ03CE23N1O3X7HRAJ63 这个字符串,...

    php的字符串类.zip

    介绍一个开发中常用的php的字符串类,希望对小伙伴们的学习实践有所帮助,需要的朋友可自行修改,随机字符串,单次截取字符串,批量截取字符串,生成唯一ID。

    Java 随机取字符串的工具类

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串、数字。或者随即生成一个不定长度的数字、或者进行一个模拟的随机选择等等。Java提供了最基本的工具,可以帮助开发者来实现这一切

    java产生随即字符串和唯一序列串等得工具包

    我是我自己写的一个工具类,打了包,里面含有源文件,可根据需要产生指定长度的大写或者小写或者大小写均有,或者纯数字,或者数字字符具有,以及产生唯一字符序列的串方法。

    java字符串处理类

    判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符) 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为2,英文字符长度为1 截取一段字符的长度,不区分中英文,如果数字不正好,则少取...生成随机字符串

    C#概率生成与触发类,字符串操作类

    本资源封装了两个类,概率类:生成概率、根据概率(一次、多次、不限次)触发,字符串类:挑选出字符串中的特定分类字符(数字、字母、标点符号等),随机生成字符串(大小字母数字选择性组合),字符串逆转换日期/...

    java随机字符串生成示例

    主要介绍了java随机字符串生成示例,这个字符随机生成类可以生成多种组合的字符串,比如大+小字符+数字+符号,需要的朋友可以参考下

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

    java随机生成字符串,字符组合多样,可以大小字组合、大+小字符+数字等方式,大家参考使用吧

    强大的C#随机字符串生成器

    这个类可以生成随机字符串,如密码和标识,主要特点是你可以定制以满足您的需求。

    工具类-随机生成纯数字 纯字母 以及 数字字母混合字符串工具类,自用留存

    工具类-随机生成纯数字 纯字母 以及 数字字母混合字符串工具类,自用留存

Global site tag (gtag.js) - Google Analytics