【Java】+随机生成字符串

https://www.cnblogs.com/jpfss/p/9772019.html

RandomStringUtils生成随机数

 

package SpringAPIAutoTestApp.Common.RandomUtil;

import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;

import java.util.Random;

/**
 * @Author: 
 * @Date: 2022/2/24 14:41
 * @Description: 随机工具
 * @Version: v1.0
 */
public interface IRandomUtil {
    /**
     * 获取随机字符串(大小写+数字)
     *
     * @param length 字符串长度
     * @return
     */
    static String getRandomStr(Integer length) {
        return RandomStringUtils.random(length, 5, 129, true, true);
    }

    /**
     * 获取随机数字字符串(默认首位不为0)
     *
     * @param length 字符串长度
     * @return
     */
    static String getRandomNumber(Integer length) {
        return getRandomNumber(length, false);
    }

    /**
     * 获取随机数字字符串
     *
     * @param length      字符串长度
     * @param firstIsZero true-首位可以为0;false-首位不能为0
     * @return
     */
    static String getRandomNumber(Integer length, boolean firstIsZero) {
        if (firstIsZero) {
            return RandomStringUtils.randomNumeric(length);
        }
        return String.format("%s%s", RandomUtils.nextInt(1, 9), RandomStringUtils.randomNumeric(length - 1));
    }

    /**
     * 获取随机字符串(中文)
     *
     * @param length 字符串长度
     * @return
     */
    static String getRandomStrCh(Integer length) {
        return RandomStringUtils.random(100, 0x4e00, 0x9fa5, false, false);
    }

    /**
     * 随机获取ASCII码中 十进制为32-126指定长度的对应字符
     *
     * @param length
     * @return 如:_mq+<#\=0hIeGm1C(?dH/\]&yp|YB|&g(<r4[fwZO]jhvKClJZon(5W9)moZ*^xJJ6\2r[4uOKX.(`)^1(5
     */
    static String getRandomAsciiStr(Integer length) {
        return getRandomAsciiStr(length, 32, 126);
    }

    /**
     * 随机获取ASCII码中 指定区域指定长度的对应字符
     *
     * @param length
     * @param asciiStart ASCII码起始位置(十进制)
     * @param asciiEnd   ASCII码结束位置(十进制)
     * @return
     */
    static String getRandomAsciiStr(Integer length, Integer asciiStart, Integer asciiEnd) {
        String randomStr = "";
        for (int i = 0; i < length; i++) {
            int ascii = (int) (Math.random() * (asciiEnd - asciiStart) + asciiStart);
            randomStr += (char) ascii;
        }
        return randomStr;
    }

    /**
     * 获取随机字符串(所有字符)
     *
     * @param length 字符串长度
     * @return 如:尢Y学I尢2Nd57E膧b淫爜B,9rxm隐祔6沼凣cSg{J淧L髆M淧N間Uqx96Hq飖S韨莩7梳4YPi膧iJS覘撜藯O[芩g
     */
    static String getRandomAllChar(Integer length) {
        String randomStrWap = getRandomAsciiStr(length);
        randomStrWap += getRandomStr(length);
        randomStrWap += getRandomStrCh(length);

        String randomStr = "";
        for (int i = 0; i < length; i++) {
            randomStr += randomStrWap.charAt(new Random().nextInt(randomStrWap.length()));
        }
        return randomStr;
    }

    /**
     * 生成随机小数
     * <p>
     * 如:getRandomDouble(50, 10, 2) == 12.34
     *
     * @param max    最大值
     * @param min    最小值
     * @param fCount 保留的小数位数
     * @return
     */
    static double getRandomDouble(Integer max, Integer min, Integer fCount) {
        String data = String.format("%." + fCount + "f", (Math.random() * (max - min) + min));
        System.out.println(data);
        return Double.valueOf(data);
    }
}

 

posted @ 2019-08-09 17:53  淡怀  阅读(321)  评论(0编辑  收藏  举报