js中字符串的常用方法(包含es6扩展)
一、字符方法
charAt方法和charCodeAt方法
相同点:charAt方法和charCodeAt方法都接收一个参数,基于0的字符位置
不同点:charAt方法是以单字符字符串的形式返回给定位置的那个字符
charCodeAt方法获取到的不是字符而是字符编码
还可以使用方括号加数字索引来访问字符串中特定的字符
例如:
var str = 'hello world';
console.log(str.charAt(1));// e
console.log(str.charCodeAt(1));// 101
console.log(str[1]);// e
二、字符串方法
1、concat()
作用:连接多个字符串,并返回一个新的字符串,不对源字符串做操作
例如:
var str = 'hello ';
var str1 = str.concat('world');
var str2 = str.concat('zhangsan', '!');
console.log(str1);// hello world
console.log(str2);// hello zhangsan!
console.log(str);// hello
2、slice方法、substring方法、substr方法
slice方法:
第一个参数指定子字符串开始位置,第二个参数表示子字符串最后一个字符后面的位置,
如果只有一个参数n,返回的是从n-1位置开始到字符串结尾的字符串
如果两个参数都是整数,同为正或同为负,第二个参数必须必第一个参数大,否则返回的是空字符串
如果第一个参数是负数,第二个参数是非负正数的时候,均返回空字符串
如果第一个参数是0,第二个参数是正数n,返回的是从0位置开始到n-1位置结束的字符串
如果第一个参数是0正数n,第二个参数是负数m,返回的是从0或n开始到从右边数第m-1位置结束的字符串
如果两个参数均为负数m、n,m<n的时候,返回的是从右边第|n|+1位置开始到第|m|位置结束的字符串
var str = 'hello world';
console.log(str.slice(3));// lo world
console.log(str.slice(-1, -3));// 空字符串
console.log(str.slice(3, 1));// 空字符串
console.log(str.slice(-1, 0));// 空字符串
console.log(str.slice(-1, 2));// 空字符串
console.log(str.slice(0, 2));// he
console.log(str.slice(0, -1));// hello worl
console.log(str.slice(1, -3));// ello wo
console.log(str.slice(-3, -1));// rl
console.log(str);// hello world
substring方法:
第一个参数指定子字符串开始位置,第二个参数表示子字符串最后一个字符后面的位置
如果只有一个参数n,返回的是从n-1位置开始到字符串结尾的字符串
如果两个参数都是整数m,n,如果第二个参数m<0,会被转成n=0,截取的结果是从0到m-1位置的字符串
如果两个参数都是整数m,n,如果n<m,会被转换成str.substring(n, m);
例如:
var str = 'hello world';
console.log(str.substring(3));// lo world
console.log(str.substring(3, 0));// hel
console.log(str.substring(3, -1));// hel
console.log(str.substring(3, 1));// el
substr方法
第一个参数指定子字符串开始位置,第二个参数表示返回的字符个数
如果只有一个参数n,返回的是从n-1位置开始到字符串结尾的字符串
如果有两个参数m,n,如果n<0,返回空字符串,否侧返回从m-1位置开始的长度为n的字符串,如果m+n-1>字符串的长度减一,则返回的是从m-1位置开始到字符串结尾的字符串
var str="hello world";
console.log(str.substr(3));//lo world
console.log(str.substr(3,7));//lo worl 7表示返回7个字符
console.log(str.substr(3,-4));//""空字符串
字符串位置方法
indexOf方法和lastIndexOf方法都是从一个字符串中搜索给定的子字符串,然后返回子字符串的位置,如果没有找到,则返回-1
indexOf方法是从字符串的开头向后搜索子字符串,lastIndexOf方法正好相反
这两个方法都可以接收两个参数:要查找的子字符串和查找的位置
例如:
var str="hello world";
console.log(str.indexOf("o"));//4
console.log(str.lastIndexOf("o"));//7
console.log(str.indexOf("o",6));//7
console.log(str.lastIndexOf("o",6));//4
trim方法
trim方法用来删除字符串前后的空格,不会改变源字符串
例如:
var str=" hello world ";
console.log('('+str.trim()+')');//(hello world)
console.log('('+str+')');//( hello world )
字符串大小写转换方法
var str="HELLO world";
console.log(str.toLowerCase());//hello world
console.log(str.toUpperCase());//HELLO WORLD
replace方法
var str="cat,bat,sat,fat";
var res=str.replace("at","one");//第一个参数是字符串,所以只会替换第一个子字符串
console.log(res);//cone,bat,sat,fat
var res1=str.replace(/at/g,"one");//第一个参数是正则表达式,所以会替换所有的子字符串
console.log(res1);//cone,bone,sone,fone
split方法
split方法是基于指定的字符,将字符串分割成字符串数组,当指定的字符为空字符串时,将会分隔整个字符串
var str="red,blue,green,yellow";
console.log(str.split(","));//["red", "blue", "green", "yellow"]
console.log(str.split(",",2));//["red", "blue"] 第二个参数用来限制数组大小
console.log(str.split(/[^,]+/));// ["", ",", ",", ",", ""] //第一项和最后一项为空字符串是因为正则表达式指定的分隔符出现在了子字符串的开头,即"red"和"yellow"
//[^...] 不在方括号内的任意字符 只要不是逗号都是分隔符
字符串模式匹配方法
match方法:只接受一个参数,由字符串或RegExp对象指定的一个正则表达式
search方法:只接受一个参数,由字符串或RegExp对象指定的一个正则表达式
search方法返回字符串中第一个匹配项的索引,如果没有匹配项,返回-1
例如
var str="cat,bat,sat,fat";
var pattern=/.at/;
var matches=str.match(pattern);
console.log(matches.index);//0
console.log(matches[0]);//cat
console.log(pattern.lastIndex);//0
//lastIndex表示开始搜索下一个匹配项的字符位置,从0算起
var pos=str.search(/at/);
console.log(pos);//1 1表示at字符串在原来字符串中第一次出现的位置
localeCompare方法
这个方法用于比较两个字符串
1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数
2.如果字符串等于字符串参数,则返回0
3.如果字符串在字母表中应该排在字符串参数之后,则返回一个正数
例如:
var str="yellow";
console.log(str.localeCompare("brick"));//1
console.log(str.localeCompare("yellow"));//0
console.log(str.localeCompare("zoo"));//-1