- string作为构造函数时用来生成字符串对象
let str01 = 'xiaoyu';
let str02 = new String('xiaoyu');
typeof str01;
typeof str02;
str02.valueOf();
str02[0];
- string作为工具方法时,将任意类型的值转为字符串
String(true);
静态方法
- 静态方法:即定义在对象本身,而不是定义在对象实例的方法
- String对象提供的静态方法主要是String.fromCharCode():该方法的参数是一个或多个数值,代表 Unicode 码点,返回值是这些码点组成的字符串
String.fromCharCode();
String.fromCharCode(104);
实例属性
- String.prototype.length:返回字符串的长度
let str = 'xiaoyu';
str.length;
实例方法
- String.prototype.charAt(): 返回指定位置的字符
let str = new String('zhongxiaoyu');
let str1 = 'zhongxiaoyu';
str.charAt(2);
str1.charAt(2);
str.charAt(str.length - 1);
str[2];
- String.prototype.charCodeAt():返回字符串指定位置的Unicode码点,相当于String.fromCharCode()的逆操作。
'xiaoyu'.charCodeAt(1);
'xiaoyu'.charCodeAt();
'xiaoyu'.charCodeAt(-1);
'xiaoyu'.charCodeAt(6);
- String.prototype.concat():连接两个字符串,返回一个新字符串,不改变原字符串
let str0 = '中小鱼';
let str1 = '要成小鱼干了';
let str2 = '小余 == 小鱼';
str0.concat(str1);
str0.concat(str1,str2);
let str3 = 18;
''.concat(str3);
- String.prototype.slice(): 从原字符串取出子字符串并返回,不改变原字符串。
* 第一个参数是子字符串的开始位置
* 第二个参数是子字符中的结束位置(不含该位置)
* 如果省略第二个参数,表示子字符串一直到原字符串的结束
* 如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度
'小鱼要成小鱼干了'.slice(-4);
'小鱼要成小鱼干了'.slice(-4, -2);
'小鱼要成小鱼干了'.slice(-4, 1);
* 正数的情况下,第一个参数大于第二个参数,返回空字符串
'小鱼要成小鱼干了'.slice(4, 1);
- String.prototype.substring():用于从原字符串取出子字符串并返回,不改变原字符串,跟slice方法很相像
* 第一个参数:表示子字符串的开始位置
* 第二个参数:表示结束位置(不包含该位置)
'小鱼要成小鱼干了'.substring(0,2);
* 省略第二个参数表示子字符串一直到原字符串的结束
'小鱼要成小鱼干了'.substring(4);
* 第一个参数大于第二个参数,substring方法会自动更换两个参数的位置
'小鱼要成小鱼干了'.substring(4, 2);
* 如果参数是负数,substring方法会自动将负数转为0
'小鱼要成小鱼干了'.substring(1,-2);
- String.prototype.substr():用于从原字符串取出子字符串并返回,不改变原字符串,跟slice和substring方法的作用相同
* 第一个参数表示子字符串的开始位置,第二个参数是子字符串的长度
'小鱼要成小鱼干了'.substr(0,2);
* 如果省略第二个参数,则表示子字符串一直到原字符串的结束
'小鱼要成小鱼干了'.substr(2);
* 如果第一个参数是负数,表示倒数计算的字符位置
'小鱼要成小鱼干了'.substr(-4);
* 如果第二个参数是负数,将被自动转为0,因此会返回空字符串
'小鱼要成小鱼干了'.substr(4, -1);
- String.prototype.indexOf():方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配
'小鱼要成小鱼干了'.indexOf('小鱼');
* indeOf方法还可以接受第二个参数,表示从该位置开始向后匹配
'小鱼要成小鱼干了'.indexOf('小鱼', 2);
- String.prototype.lastIndexOf(): 用法跟indexOf方法一致,主要的区别是lastIndexOf从尾部开始匹配,indexOf则是从头部开始匹配
'小鱼要成小鱼干了'.lastIndexOf('小鱼');
'小鱼要成小鱼干了'.lastIndexOf('小鱼', 2);
- String.prototype.trim(): 用于去除字符串两端的空格,返回一个新字符串,不改变原字符串
' 小鱼要成 小鱼干了 '.trim();
- String.prototype.toLowerCase(): 用于将字符串全部转为小写
String.prototype.toUpperCase():用于将字符串全部转为大写
'zhongxiaoyu'.toUpperCase();
- String.prototype.match(): 用于确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配则返回null.可以使用正则表达式作为参数
'一勤天下无难事'.match('事');
- String.prototype.search():用法基本等同于match,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1,可以使用正则表达式作为参数
String.prototype.replace(): 用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰的正则表达式) ,可以使用正则表达式作为参数
'唐门外门弟子唐三'.search('唐');
'唐门外门弟子唐三'.replace('唐','中');
- String.prototype.split(): 按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组,可以使用正则表达式作为参数
let str = '中小鱼,是好多余的鱼';
str.split(',');
str.split();
str.split('');
'中小鱼,,是好多余的鱼'.split(',');
'中小鱼,,是好多余的鱼'.split(',');
let str1 = '中小鱼是好多余的鱼';
str1.split('鱼');
let str2 = '鱼是好多鱼的鱼.';
str2.split('鱼');
let str2 = '鱼是好多余的鱼.';
str2.split('鱼',2);
- String.prototype.localeCompare():用于比较两个字符串(采用Unicode码点比较)
* 第一个字符串 > 第二个字符串 ,返回的结果大于0;
* 第一个字符串 < 第二个字符串,返回的结果小于0;
* 第一个字符串 == 第二个字符串,返回0
let str1 = '中小鱼好多余';
let str2 = '中小鱼是好多余的鱼';
str1.localeCompare(str2);
let str1 = '中小鱼是好多余的鱼';
let str2 = '中小鱼是好多余的鱼';
str1.localeCompare(str2);