0 1130

在 JavaScript 中生成随机字符串/字符

比方说:我想要一个由从集合中随机挑选的字符组成的 5 个字符串[a-zA-Z0-9]

使用 JavaScript 执行此操作的最佳方法是什么?

1、最普通的方法我们通常会自定义一个函数如下,这个方法也是不错的

<script type="text/javascript">
function makeid(length) {
    var result           = '';
    var characters       = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var charactersLength = characters.length;
    for ( var i = 0; i < length; i++ ) {
      result += characters.charAt(Math.floor(Math.random() * 
      charactersLength));
   }
   return result;
}
document.write(makeid(5));
</script>

2、但是这里我想介绍下更精妙的方法只要一行代码就可搞定如下:

<script type="text/javascript">
let r = (Math.random() + 1).toString(36).substring(7);
document.write("random", r);
</script>

注:这里用到三个函数分别介绍下

1)、Math.random 返回0(包含)~ 1(不包含)之间的一个随机数,不精确的说法也可以说是浮点数

输出结果可以为0,888882212223

2)、toString() 把数字转换为字符串,举两个例子

<script type="text/javascript">
     var num1 = 10;
     var num2 = 10.0;
     var num3 = 10.5;
     document.write(num1.toString());//输出10
     document.write("<br>");
     document.write(num2.toString());//输出10
     document.write("<br>");
     document.write(num3.toString());//输出10.5
</script>
<script type="text/javascript">
    var num1 = 10.5;
    document.write(num1.toString(2));//输出1010.1
    document.write("<br>");
    document.write(num1.toString(32));//输出a.g
    document.write("<br>");
    document.write(num1.toString(16));//输出a.8
</script>

第一个例子无论你用什么表示法声明数字,只是按十进制返回。第二个例子很明显,就是把数值型转换成相应的进制。

3)、substring()比较复杂这里多说点

定义和用法
substring 方法用于提取字符串中介于两个指定下标之间的字符。


语法
stringObject.substring(start,stop)

参数     描述
start     必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop     可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。

返回值
一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。

说明
substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
如果 start 或 end 为负数,那么它将被替换为 0。


举例:
var str = "0123456789";
alert(str.substring(0));------------"0123456789"
alert(str.substring(5));------------"56789"
alert(str.substring(10));-----------""
alert(str.substring(12));-----------""
alert(str.substring(-5));-----------"0123456789"
alert(str.substring(-10));----------"0123456789"
alert(str.substring(-12));----------"0123456789"
alert(str.substring(0,5));----------"01234"
alert(str.substring(0,10));---------"0123456789"
alert(str.substring(0,12));---------"0123456789"
alert(str.substring(2,0));----------"01"
alert(str.substring(2,2));----------""
alert(str.substring(2,5));----------"234"
alert(str.substring(2,12));---------"23456789"
alert(str.substring(2,-2));---------"01"
alert(str.substring(-1,5));---------"01234"
alert(str.substring(-1,-5));--------""

[分类]
[来源] http://erlangyun.com/p/id/183.html
[声明] 本站资源来自用户分享,如损害你的权益请联系客服QQ:120074275给予处理。