JavaScript随机字符串的生成

2020-03-23  本文已影响0人  3ef698de5362

写在之前

今天项目中有个问题需要随机生成一个包含大小写字母和数字的字符串并插入到一个字符串中做一个验证测试。继续一下代码的开发过程。这个就是自己想出来的一个东西,代码写得不一定优雅,还请老铁们指正。

代码开撸

随机数的生成

Math.random() 函数返回一个浮点, 伪随机数在范围从0到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。

得到一个大于等于0,小于1之间的随机数

function getRandom() {
  return Math.random();
}

得到一个两数之间的随机数

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min; 
}

得到一个两数之间的随机整数

function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值
}

得到一个两数之间的随机整数,包括两个数在内

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 
}

随机生成26个大小写字母

JavaScript生成26个大小写字母,主要用到 str.charCodeAt()和 String.fromCharCode()方法

生成随机的26个小写字母

String.fromCharCode(Math.floor(Math.random()*26)+"a".charCodeAt(0));

生成随机的26个大写字母

String.fromCharCode(Math.floor(Math.random()*26)+"A".charCodeAt(0)); 

生成特定长度的大小写字母和数字的字符串

function getRandomStr(num=10) {
    let str = "";
    for (let i = 0; i < num; i++) {
        let index = this.getRandomIntInclusive(0, 2);
        switch (index) {
            case 0:
                str += String.fromCharCode(Math.floor(Math.random() * 26) + "a".charCodeAt(0));
                break;
            case 1:
                str += String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0));
                break;
            case 2:
                str += this.getRandomIntInclusive(0, 9); //就是上面的函数
                break
        }
    }
    return str;
},

在给定字符串指定间隔插入指定长度随机字符串

function randomChangeStr(str,interval=2,strLen=3) {
        if(!str) return str;
        let strArr = Array.from(str);
        for (let i=interval-1; i< str.length-interval; i+=interval){
            strArr[i] += this.getRandomStr(strLen); //上面的函数
        }
        return strArr.join('');
    }

写在最后

今天主要是一个随机字符串的生成,没啥其他的东西,就是想到什么写什么了。如果有更好的写法请在下面留言。欢迎交流,十分谢谢!

上一篇下一篇

猜你喜欢

热点阅读