String的创建方式
- 字面量创建方式,存在栈中
- 实例化创建方式,存在栈中
- 构造函数创建方式,会创建一个字符型对象,存在堆中
// 字面量创建方式
var str="abc",str1='abd',str2=`abc`;
//实例化创建方式
var str4=String('abc');//存在栈中
//构造函数创建方式
var str5=new String('abc');//字符型对象,存在堆中
console.log(str4===str5);//false
console.log(str4==str5);//true
String的属性
- length 字符串的长度
var str="abcdef";
//str[0]获取字符串下标是0的字符,只读,不能设置值
//str.length 长度 只读,只能获取字符串的字符个数,
//将字符串进行倒序
var len=str.length-1;
var str6="";
while(len>=0){
str6+=str[len];
len--;
}
console.log(str6);
String的方法
- indexOf(),返回指定元素第一次出现的下标,没有的话返回-1
- concat(),连接各字符串
- charAt(),获取下标为1的字符
- charCodeAt(),求字符串对应下标字符的Unicode编码
- fromCharCode(),参数为Unicode编码,将Unicode编码转成对应字符
- replace(n,m),字符串的替换,n为要查找的值,m为替换后的值或者回调函数,返回被替换的结果,原字符串不改变,仅能替换第一个被查找到的元素
- slice(n,m),返回从下标n开始,到下标m之前的字符串;如果n为负数,倒着数,也就是变成(n+str.length);如果没有第二个参数,就会截取到尾部。
- substing(n,m),字符串的截取,从下标n开始,截取到下标m之前,n不允许使用负数(负数就是0);如果没有第二个参数,就会截取到尾部。
- substr(n,m),字符串的截取,从下标n开始,截取m个;如果n为负数,倒着数,也就是变成(n+str.length);如果m为负数,会被认为是0,返回空字符串;如果没有第二个参数,就会截取到尾部。
- toLowerCase(),全部转换为小写。
- toUpperCase(),全部转换为大写。
- match(),以数组的形式返回找到的内容,没有找到返回null
- search(),返回要查找参数的下标
- split(),将字符串以参数为符号切割成数组
- toString(),参数代表进制数,将字符转换成多少进制数 的结果
var str="abcdefghijklmn";
//获取下标为1的字符
console.log(str.charAt(1));//b
//替换字符串中指定的内容,返回被替换后的字符串,原字符串不改变
console.log(str.replace("a","b"));//bbcdefghijklmn
// substring不允许使用负数(负数就是0)
console.log(str.substring(-4,3));//abc
console.log(str.substring(0,4))//abcd
console.log(str.split());//[ "abcdefghijklmn" ]
console.log(str.split("").reverse().join(""));//nmlkjihgfedcba
console.log(str.search("a"));//0
console.log(str.match("a"));//[ "a" ]
console.log(str.charAt(1));//b
console.log(str.indexOf("b",1));//1
console.log(str.lastIndexOf("b"));//1
console.log(str.slice(0,1));//a
console.log(str.toUpperCase());//ABCDEFGHIJKLMN
console.log(str.toLowerCase());//abcdefghijklmn
扩展案例:获取由a-z A-Z 0-9 组成的随机数组
var arr = [];
//先通过对应的Unicode编码来获取到数组
for (var i = 48; i < 123; i++) {
if (i > 57 && i < 65) continue;
if (i > 90 && i < 97) continue;
arr.push(String.fromCharCode(i));
}
//将数组乱序排列
/*var arr1=arr.sort(function () {
return Math.random() - 0.5;
})*/
//将数组乱序排列
var arr1=[];
while(arr.length>0){
var n=Math.floor(Math.random()*arr.length);
arr1.push(arr.splice(n,1)[0]);
}
console.log(arr1);
使用 sort() 进行乱序排列时,不是公平乱序。推荐使用随机数方法对数组进行乱序排列。