在前一段时间写过js中出境频次较高的字符串操作方法这篇博客,在博客中所涉及的知识点都是一个前端工作人员必须掌握的。今天对上篇博客进行升华。
1.String对象是javascript原生提供的三个包装对象之一,用来生成字符串对象。
let s1 = 'abc';
let s2 = new String('abc');
//获取s1 s2的类型
typeof s1;//"string"
typeof s2;//"object"
s2.valueof();//"abc"
2.字符串对象是一个类似数组的对像
new String('abc');//String {0: "a" ,1: "b",2: "c",length: 3}
// 通过索引获取指定位置字符串
(new string('abc'))[1] // 'b'
3.将任意类型的值转化为字符串
String(true)// "true"
String(5) // "5"
String(null) // "null"
String(undefined) // "undefined"
String(NaN)//"NaN"
4.String.fromCharCode() 定义在对象本身上的静态方法而非实例,参数可以为一个或多个数值,代表的是Unicode码点,返回值是这些码点组成的字符串
// 参数为空,返回空字符串
String.fromCharCode(); //""
String.fromCharCode(97);// "a"
// 参数可以为多个
String.fromCharCode(104,101,108,108,111) // "hello"
// 不支持Unicode码点大于0xFFFF的字符 自动把多余的去掉
String.formCharCode(0x20BB7) === String.fromCharCode(0x0BB7) // true
5.String.prototype.charAt() 返回指定位置的字符 参数是从0开始的参数,如果参数为负数或者大于字符串长度返回空串
'abc'.charAt[1] // "b"
'abc'[1] // b
// 参数为空
'abc'.charAt(0)//"a"
// 参数大于字符串长度
'abc'.charAt(3)//""
6.String.prototype.charCodeAt() 返回字符串指定位置的Unicode码点(十进制方法)相当于String.fromCharCode()的逆操作
'abc'.charCodeAt(1); // 98
// 参数为空 默认返回第一个
'abc'.charCodeAt('') ;// 97
// 参数为负数 或者 大于等于字符串的长度 返回 NaN
'abc'.charCodeAt(-1); // NaN
'abc'.charCodeAt(4); // NaN
7.String.prototype.slice() 字符串截取,返回新字符串 不改变原字符串 参数1 起始位置 参数2 结束位置
// 参数为负数 表示从结尾开始倒数计算的位置,既该负值加上字符串长度
'JavaScript'.slice(-6) // "Script"
'JavaScript'.slice(0,-6) // "Java"
'JavaScript'.slice(-2,-1) // "p"
// 参数1 大于 参数2 返回一个空字符串
'JavaScript'.slice(2,1) // " "
7.String.prototype.substring() 字符串截取 , 返回新字符串 不改变原字符串 参数1 起始位置 参数2 结束位置
// 如果第一个参数大于第二个参数,substring()方法会自动更换参数的位置
'JavaScript'.substring(10,4) // "Script"
'JavaScript'.substring(4,10) // "Script"
// 如果参数为负数,substring方法会自动将负数转化为0
'JavaScript'.substring(-3) // "JavaScript"
// 第二个参数先转化为0 ,再互换位置
'JavaScript'.substring(4,-3) // "Java"
8.String.prototype.substr() 字符串截取 , 返回新字符串 不改变原字符串 参数1 起始位置 参数2 字符串的长度
// 参数1为负数 表示倒数计算的字符的位置
'JavaScipt'.substr(-6) // "Script"
// 参数2为负数,将自动转为 0 字符串长度为0 返回空字符串
'JavaScript'.substr(4,-1) // ""