一、String对象
1.1 字符串的实质
在底层字符串对象实质上是以字符数组的形式存储的。
所以数组的一些特性也适用于字符串。
1.2 创建字符串
1.var str="hello world"
2.var str=new String("hello world");
1.3 字符串的基本操作
1、获取字符串的长度
2、访问数组的方式也可以用于访问字符串,即使用下标访问字符串。
原因: 字符串底层也是使用了字符数组来保存数据的。
所以数组的一些特性也适用于字符串。
1) 获取字符串的长度
var s="abc";
console.log(s.length);
2)使用访问数组的方式也可以用于访问字符串,即使用索引值来访问字符串
var s="abc";
console.log(s.length);
console.log(s[0]);
console.log(s[1]);
for(var i in s){
console.log(s[i])
}
二、String对象基本方法
2.1 查询
str.indexOf("ad")
str.indexOf("ad",index)
获取字符串第一次出现的索引值。没有返回-1
str.lastIndexOf("ad")
str.lastIndexOf("ad",index)
获取字符串最后一次出现的索引值。没有返回-1
str.charAt(index)
根据索引值获取指定位置的字符。
相当于str[index]
str.charCodeAt(index)
根据索引值获取指定位置的字符的Unicode码值。
String.fromCharCodeAt(Unicode码值)
根据unicode码值获取字符
1)str.indexOf( ) 获取字符串第一次出现的索引值
var s="123dsds23d";
var index=s.indexOf("23");
console.log(index)
var index2=s.indexOf("23",3);
console.log(index2)
2)str.lastIndexOf( ) 获取字符串最后一次出现的索引值
var s="123dsds23d";
var index=s.lastIndexOf("23");
console.log(index)
var index2=s.lastIndexOf("23",3);
console.log(index2)
3)str.charAt( ) 获取指定位置的字符
var s="dsdssr ";
console.log(s.charAt(1));
console.log(s[1]);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/597c3533deacca8782502cb76847726b.png)
4)String.fromCharCodeAt(Unicode码值) 根据码值获取字符
var s=String.fromCharCode(2000)
console.log(s)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dcbfc8353a6f050f5e1295b1654a840c.png)
2.2 截取字符串
1) str.slice() 截取字符串并返回【不会影响原字符串】
str.slice(a) 截取字符串,从索引值a开始
str.slice(a,b) 截取字符串,从索引值a开始,到索引值b结束(不包含索引值b)
2) str.substring() 截取字符串并返回,和slice类似。【不会影响原字符串】
str.substring(a) 截取字符串,从索引值a开始
str.substring(a,b) 截取字符串,从索引值a开始,到索引值b结束(不包含索引值b)
3) str.substr() 截取字符串并返回,和以上两个方法不同。【不会影响原字符串】
str.substr(a) 截取字符串,从索引值a开始
str.substr(a,b) 截取字符串,从索引值a开始,截取b个字符。
注意事项:
str.slice(a,b)
str.substring(a,b) 这两个方法类似。
第一个参数:截取字符串开始的索引值
第二个参数:可选,截取字符串结束的索引值(不包含尾部)
str.substr(a,b)
第一个参数:截取字符串开始的索引值
第二个参数:可选,截取字符的个数
1)str.slice() 截取字符串并返回【不会影响原字符串】
var s="hello wordls";
var s1=s.slice(2);
var s2=s.slice(2,5);
2)str.substring() 截取字符串并返回【不会影响原字符串】
var s="hello wordls";
var s1=s.substring(2);
console.log(s1)
var s2=s.substring(2,5);
console.log(s2)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/91ce2d0ae6e404878a921b9087c696e7.png)
3)str.substr() 截取字符串并返回【不会影响原字符串】
var s="hello wordls";
var s1=s.substr(2);
console.log(s1)
var s2=s.substr(2,5);
console.log(s2)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d439a7d4a10e8b7dd98348e2fd01b314.png)
2.3 拼接或拆分字符串
str.concact() 用于拼接两个或多个字符串【不会影响原字符串】
作用和'+' 一样
str.split() 将一个字符串拆分为数组
str.split(",") 根据字符串将一个字符串拆分为数组
str.split("") 传入空传。切割字符。
str.split(reg) 根据正则表达式将一个字符传拆分为数组
1)str.concact()用于拼接两个或多个字符串
var s="123";
var ss=s.concat("sa","23","@3");
console.log(ss)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e040632a262c39275667d00d391747e5.png)
2)str.split( )
>>>>>> str.split("-") 根据字符串将一个字符串拆分为数组
var ss="a-b-ew-ewe-wewe";
var arr=ss.split("-")
console.log(arr);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/874515658ae6fa4e243b88a0753d754f.png)
>>>>>> str.split("") 根据空字符传,切割字符
var ss="a-b-ew-ewe-wewe";
var arr=ss.split("")
console.log(arr);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3f17d14bf7a26aea60eabfa7bce60a5f.png)
>>>>>> str.split(reg) 根据正则表达式拆分为数组
var s="ab12cd34dx";
var arr=s.split(/[0-9]+/);
console.log(arr)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8efe94170a536210bd9ab796b7e8cc8b.png)
2.4 其他
str.toUpperCase() 转大写
str.toLowerCase() 转小写
str.trim() 去除两边空格
1)转大小写
var ss="a-b-ew-ewe-wewe";
console.log(ss.toUpperCase())
console.log(ss.toLowerCase())
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/487146a5319240a1b2032b5c57e44439.png)
2)str.trim() 去除两边空格
var ss=" hello wrold ";
console.log(ss.trim())
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c26d365b7c7c488ca5362dabe4dcf79a.png)
三、String支持正则表达式的方法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/82c76fc0c57ec9fefdaca23146662e2c.png)
3.1 split( ) 将一个字符串拆分为数组
split() 将一个字符串拆分为数组
1) split("xxx") 根据字符串, 将一个字符串拆分为数组
2) split(reg) 根据正则表达式, 将一个字符串拆分为数组
- 这个方法即使不指定全局匹配,也会全部拆分。
1)split(“xxx”)
var s="a1b1n1h1hh1h1oj1ll";
var arr=s.split("1");
console.log(arr);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/591f5e568a06784ca209fe9afb1947ec.png)
2)split(reg)
>>>>>> 将字符串以正则表达式拆分
var s="a1b1n1h1hh1h1oj1ll";
var arr=s.split(/[0-9]/);
console.log(arr);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e9b8538041d0e4b64ec52b11b6fe0ebf.png)
>>>>>> 注意:split(reg) 即使不指定全局匹配,也会全部拆分
var s="a1b1n1h1hh1h1oj1ll";
var arr=s.split(/[0-9]/);
console.log(arr);
var arr2=s.split(/[0-9]/g);
console.log(arr2);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bcb32134ee24b65ff146a4597faadf76.png)
3.2 search( ) 查询字符串是否含有指定内容
search( )
查询字符串是否含有指定内容,返回第一次出现的索引值。相当于indexOf()
1) search("str") 查询字符串是否含有指定内容。
返回字符串第一次出现的索引值。没有返回-1。
2) search(reg) 根据正则表达式,查询字符串是否含有指定内容
- 这个方法只会查找第一个,即使设置了全局匹配也没用。
1)search(“str”)
var str="abc ssds abc adc dsd aec "
console.log(str.search("abc"))
console.log(str.search("adc"))
console.log(str.search("aec"))
2)search(reg)
>>>>>> 根据正则表达式,查询字符串是否含有abc或adc或aec
var s="hello abc adc aec afc";
console.log(s.search(/a[bde]c/));
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ab6859e9ff2d7d024718d3ecfed5698c.png)
>>>>>> 注意:search(reg) 即使指定了全局匹配,也只会匹配一次就会停止
var s="hello abc adc aec afc";
console.log(s.search(/a[bde]c/))
console.log(s.search(/a[bde]c/g))
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c36302e6038d50be2aaff8e81a97fd5d.png)
3.3 match( ) 根据正则表达式,将符合的内容提取出来
match(reg)
根据正则表达式,提取字符串中符合条件的内容。返回一个数组(会将匹配的内容封装到数组中返回)
默认情况下找到第一个符合条件的内容就会停止。
1) match(”str“) 将符合指定的内容提取出来,返回数组。
默认情况下找到第一个符合条件的内容就会停止。
2) match(reg) 将符合条件的内容提起出来,返回数组。
- 默认情况下找到第一个符合条件的内容就会停止。
- 我们可以设置正则表达式的全局模式,这样就可以匹配所有内容。
match(/reg/g)
1) match(“str”)
>>>>>> 将符合条件的内容提取出来,返回数组
var s="bafvadfads";
var arr=s.match("a");
console.log(arr);
>>>>>> 将符合条件的内容提取出来,返回数组,默认匹配到第一个就会停止
var s="bafvadfads";
var arr=s.match("a");
console.log(arr);
2) match(reg)
>>>>>> match(reg) 根据正则表达式,将符合条件的内容提取出来。默认匹配到一个就会停止
var s="bafvadfads";
var arr=s.match(/a/);
console.log(arr);
>>>>>> 我们可以设置正则表达式的全局模式,这样就可以匹配所有内容。
var s="bafvadfads";
var arr=s.match(/a/g);
console.log(arr);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4d26f44b73e8396641d7cc1845f990c5.png)
3.4 replace( ) 替换内容
replace(old ,newStr)
将指定的内容替换为新的内容
1) replace("str",newStr) 将指定的字符串替换为新的内容
默认只会替换第一个。不会全部替换
2) replace(reg,newStr) 根据正则表达式, 将指定的内容替换为新的内容
- 默认只会替换第一个。不会全部替换
- 我们可以使用正则表达式的全局模式来实现全局替换。
replace(/reg/g)
1)replace(“str”,newStr)
1. 将指定的字符串替换为新的字符串
2. 默认只会替换第一个。
var s="121ewewe121ewe";
var ss=s.replace("121","ccc")
console.log(ss);
2) replace(reg,newStr) 根据正则表达式, 将指定的内容替换为新的内容
>>>>>> 根据正则表达式,将指定的内容替换为字符串,默认只会替换第一个匹配的
var s="121ewewe121ewe";
var ss=s.replace(/121/,"ccc")
console.log(ss);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e46750ed80755a5f01eca1f8ede5b826.png)
>>>>>> 注意:我们可以设置正则表达式的全局模式,将所有符合的字符串替换。
var s="121ewewe121ewe";
var ss=s.replace(/121/g,"ccc")
console.log(ss);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c1a7891c7ffcc6f653be135ee8447d6c.png)
>>>>>> 去除左右空格
var str=" xxx ";
console.log("去掉左边空格",str.replace(/^\s+/,""))
console.log("去掉右边空格",str.replace(/b+$/,""))
四、模板字符串(标签函数)
ES6中引入了模板字符串,让我们告别了使用大量'' 和 +来连接字符串了写法。
语法:
1) 创建一个模板字符串,只需要使用反引号``将字符串包起来
2) 模板字符串中的变量用${变量名}替代即可
1)拼接单行字符串
var msg="aaaaa";
var msg2='bbbbbb';
var text=`hello${msg}! hello ${msg2}`
console.log(text)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/15dedd9f8d8b89e4360c616112466384.png)
2)拼接多行字符串
var msg="aaaaa";
var msg2='bbbbbb';
var text=`hello${msg}
hello ${msg2}`
console.log(text)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c58d22015e753bc9ca56337e067df70f.png)
3)嵌入表达式
<script>
var text=`aaaa${1}+${2}=${1==1?1+2:1+3}`
console.log(text)
</script>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a53b92d268e0e6ac3ef6286323ee4fb4.png)
4)调用函数
function s(){
return "aaa";
}
var text=`zxxxx${s()}xxxx`
console.log(text)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3a22e77cbd31f78385b6ca1f2e3cce70.png)