一、普通方法
1.字符方法
动态方法:1、str.charAt(index); 返回子字符串,index为字符串下标,index取值范围[0,str.length-1]
动态方法:2、str.charCodeAt(index); 返回子字符串的unicode编码,index取值范围同上
静态方法:3、String.fromCharCode(num1,num2,…,numN); 根据unicode编码返回字符串
/*
charAt方法和charCodeAt方法都接收一个参数,基于0的字符位置
charAt方法是以单字符字符串的形式返回给定位置的那个字符
charCodeAt方法获取到的不是字符而是字符编码
*/
var str="hello world";
console.log(str.charAt(1));//e
console.log(str.charCodeAt(1));//101
concat() 方法可用于代替加运算符。下面两行是等效的:
var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ","World!");
所有字符串方法都会返回新字符串。它们不会修改原始字符串。
正式地说:字符串是不可变的:字符串不能更改,只能替换。
2.字符串操作方法
concat方法 和 '+'的方法
var str="hello ";
var res=str.concat("world");
console.log(res);//hello world
console.log(str);//hello 这说明原来字符串的值没有改变
var res1=str.concat("nihao","!");
console.log(res1);//hello nihao! 说明concat方法可以接收任意多个参数
//虽然concat方法是专门用来拼接字符串的,但是实践中我们使用最多的还是加操作符+,因为其简易便行
+的方法
let a = 'hello '
a = a + 'world'
console.log(a) //hello world
a会改变
ps
concat 跟 ‘+’ 的差别,concat不会改变原字符串,+会改变原字符串
3.截取字符串
slice方法、substring方法、substr方法:
str.substring(start,end); 两个参数都为正数,返回值:[start,end) 也就是说返回从start到end-1的字符
str.slice(start,end); 两个参数可正可负,负值代表从右截取,返回值:[start,end) 也就是说返回从start到end-1的字符
不建议用:str.substr(start,length); start参数可正可负,负数代表从右截取
除了 slice() 和 substr() 方法里的负值是代表从右截取,其他方法里的负值一律作为0处理
【引申】:截取数组
arr.slice(start,end); 两个参数可正可负,负值代表从右截取,返回值:[start,end) 也就是说返回从start到end-1的字符
slice方法:第一个参数指定子字符串开始位置,第二个参数表示子字符串最后一个字符后面的位置
substring方法:第一个参数指定子字符串开始位置,第二个参数表示子字符串最后一个字符后面的位置
substr方法:第一个参数指定子字符串开始位置,第二个参数表示返回的字符个数
这三个方法都会返回被操作字符串的一个子字符串,都接收一或两个参数
如果没有给这些方法传递第二个参数,则将字符串的长度作为结束位置。这些方法也不会修改字符串本身,只是返回一个基本类型的字符串值
*/
var str="hello world";
console.log(str.slice(3));//lo world
console.log(str.substring(3));//lo world
console.log(str.substr(3));//lo world
console.log(str.slice(3,7));//lo w 7表示子字符串最后一个字符后面的位置 简单理解就是包含头不包含尾
console.log(str.substring(3,7));//lo w
console.log(str.substr(3,7));//lo worl 7表示返回7个字符
console.log(str.slice(3,-4));//lo w -4+11=7表示子字符串最后一个字符后面的位置 简单理解就是包含头不包含尾
console.log(str.substring(3,-4));//hel 会转换为console.log(str.substring(3,0));
//此外由于这个方法会将较小数作为开始位置,较大数作为结束位置,所以相当于调用console.log(str.substring(0,3));
console.log(str.substr(3,-4));//""空字符串
console.log(str.substring(3,0));
4.字符串位置方法
str.indexOf(searchString,startIndex); 返回子字符串第一次出现的位置,从startIndex开始查找,找不到时返回-1
str.lastIndexOf(searchString,startIndex);lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索。
/*
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
5.trim方法
/*
trim方法用来删除字符串前后的空格
*/
var str=" hello world ";
console.log('('+str.trim()+')');//(hello world)
console.log('('+str+')');//( hello world )
6.字符串大小写转换方法
str.toLowerCase()
str.toUpperCase()
7.字符串分割成数组
str.split(separator,limit); 参数1指定字符串或正则,参照2指定数组的最大长度
例:str.split(""); 每个字符都被分割 [’’,’’,’’,’’]
str.split(); 整个字符串放到数组里 [’’]
【引申】:数组变成字符串
arr.join(分隔符) 以,连接
arr.join(’’) 无缝连接
arr.join(’-’) 以-连接
arr.join(’’ + str + ‘’) 以表达式连接
/*
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"
//[^...] 不在方括号内的任意字符 只要不是逗号都是分隔符
8.localeCompare方法
/*
这个方法用于比较两个字符串
1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数
1.如果字符串等于字符串参数,则返回0
1.如果字符串在字母表中应该排在字符串参数之后,则返回一个正数
*/
var str="yellow";
console.log(str.localeCompare("brick"));//1
console.log(str.localeCompare("yellow"));//0
console.log(str.localeCompare("zoo"));//-1
9.fromCharCode方法
/*
fromCharCode方法是接收一或多个字符编码,然后将其转换为字符串
fromCharCode方法是String构造函数的一个静态方法
*/
console.log(String.fromCharCode(104,101,108,108,111));//hello
10.字符串之间的比较
字符串之间的比较:比较第一个字符的unicode编码值,第一个字符要是相同,就比较第二个,依次往下
‘10000’ < ‘2’ 1的unicode值比2的unicode值小 true
‘10000’ > 2 转成数字比较 true
11.字符串长度
var txt = "abc";
var sln = txt.length; //3
二、高级方法
1.字符串正则匹配
str.match(rgExp) 正则匹配
str.search(/at/)
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字符串在原来字符串中第一次出现的位置
两种方法,indexOf() 与 search(),是相等的。
这两种方法是不相等的。区别在于:
search() 方法无法设置第二个开始位置参数。
indexOf() 方法无法设置更强大的搜索值(正则表达式)。
您将在正则表达式的章节学习到这些更强大的检索值。
2.replace替换方法
str.replace(rgExp/substr,replaceText) 返回替换后的字符串
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