字符串数据
字符串的定义
程序员写代码,经常要对字符串做各种处理,比如字符串的拼接、字符串里面关键信息的提取、格式的转换等等。
js中, 一个字符串数据的类型是 字符串(String)
前面的课程,我们已经看到字符串是这样写的
'你好'
大家要注意:
字符串定义前后的引号,只是告诉解释器,引号内部 的内容就是一个字符串对象的内容。
而引号本身并不是字符串的内容。
也就是说,像这样定义的一个字符串
'你好'
字符串对象的内容是 你好
, 而不是 '你好'
这里字符串是用单引号括起来的
其实字符串还可以 用 双引号 、 反引号,下面的定义都是正确的
"你好"
`你好`
其中反引号(backticks)引起来的称之为 模板字符串 , 可以 直接写内容有多行
的字符串。如下
`刘总:
您好!
您发的货我们已经收到,明天就把余款付清。
祝: 商祺。
小徐
2022-06-12`
上面是一封信的内容,可以直接放到反引号里面。
大家可以拷贝上面的代码保存到文件中,运行一下看看。
所以,如果字符串的内容有多行,用反引号就特别方便直观。
如果不使用反引号定义字符串, 通常只能在字符串中 使用 \n
转义符表示换行。
就得像这样定义:
'刘总:\n 您好!\n 您发的货我们已经收到,明天就把余款付清。\n \n 祝: 商祺。\n 小徐\n 2022-06-12'
字符串内容其实是一样的,但是这样写就非常的麻烦,而且不直观。
字符串中有引号
如果我们要定义的 字符串内容里面就有引号,怎么办?
比如:字符串 He said : 'OK, I will go now'
字符串内容里面有单引号,那么我们在定义这个字符串的时候,就应该用双引号。如下:
"He said : 'OK, I will go now'"
否则,就会出现语法错误,大家可以试试下面的写法
'He said : 'OK, I will go now''
看看会报什么错。
同样的,如果我们要定义的 字符串内容里面就有双引号
比如:字符串 He said : "OK, I will go now"
字符串内容里面有双引号,那么我们在定义这个字符串的时候,就应该用单引号。如下:
'He said : "OK, I will go now"'
如果我们要定义的 字符串内容里面 既有双引号,也有单引号
比如:字符串 He said : 'OK, "I will go now"
那么我们在定义这个字符串的时候,就可以用反引号。
如下:
`He said : 'OK, "I will go now"`
如果我们要定义的 字符串内容里面 既有双引号,也有单引号、也有反引号,可以使用 反斜杠 \
进行转义
如下:
`He said : 'OK, "I will go \`now\`"`
字符串拼接
拼接是字符串常见的操作,可以用加号 把两个字符串连接起来,产生一个新的字符串,像这样
var myFavorit = '我最爱的运动是:'
var sport = '足球'
console.log(myFavorit + sport)
运行结果如下
我最爱的运动是:足球
当然,还可以有更多的拼接,像这样
var myFavorit = '我最爱的运动有:'
var sport1 = '足球'
var sport2 = '蓝球'
console.log( myFavorit + sport1 + '---' + myFavorit + sport2 )
字符串也可以和其它类型数据进行拼接,比如
'您的年龄是:' + 25
js引擎发现 字符串和其它类型的数据用+号连接,就会先把 其它类型的数据先转化为 对应的字符串,然后再拼接
上例中表达式的结果就是 字符串 您的年龄是:25
再看一个 字符串和数组 拼接的例子
'10以内的质数有: ' + [2,3,5,7]
结果是 字符串 10以内的质数有: 2,3,5,7
字符串元素索引
大家看看这个字符串
'刘总你好啊'
大家从字符串内容就可以看出,里面有5个字符,每个字符都是这个字符串的一个元素。
字符串就是由一个个 元素 - 字符 组成的。
像这种由一个个 元素依次组成的字符串, js 语言里面,把这种特性的数据称之为 sequence,翻译成中文就是序列。
字符串就是一种序列。
序列里面的元素都是有索引的。 所谓索引就是元素的下标,如下图所示
特别特别要注意的是,字符串元素的索引是从 0
开始,而不是从1 开始。
上面的字符串
刘 这个字符的索引是 0 ,
总 这个字符的索引是 1 ,
你 这个字符的索引是 2 ,
好 这个字符的索引是 3 ,
啊 这个字符的索引是 4 ,
js 可以用索引来获取一个字符串中的某个字符 ,对于这样的一个字符串定义
var hello = '刘总你好啊'
刘 这个字符可以这样获取 hello[0] , 运行如下代码看看
var hello = '刘总你好啊'
console.log(hello[0])
总 这个字符可以这样获取 hello[1],
你 这个字符可以这样获取 hello[2] ,
好 这个字符可以这样获取 hello[3] ,
啊 这个字符可以这样获取 hello[4] ,
根据这个规则,一个长度为 len 的字符串, 它的最后一个字符的下标是len-1。
如果是这样的一行代码呢?
var hello = '刘总你好啊'
console.log(hello[5])
由于并不存在一个下标索引为5 的元素, 就会显示如下:
undefined
获取字符串长度
字符串对象有个属性 length
可以用来获取字符串的长度,也就是获取字符串中字符的个数
比如
var hello = '刘总你好啊'
console.log(hello.length)
返回结果是5,因为 变量 hello 对应的字符串长度就是5个字符。
注意 符号 .
就表示后面的部分是前面的对象的属性。
一个很长的字符串
var str1 = 'cHl0aG9uMy52aXAlMjAlRTclOTklQkQlRTYlOUMlODglRTklQkIlOTElRTclQkUlQkQlMjAlRTclODklODglRTYlOUQlODMlRTYlODklODAlRTYlOUMlODk='
要获取最后一个元素,不需要去从前往后数下标, 一直数到最后的位置。
而是可以直接用
str1[str1.length-1]
就可以了,这样就方便了很多