字符串数据

字符串的定义

程序员写代码,经常要对字符串做各种处理,比如字符串的拼接、字符串里面关键信息的提取、格式的转换等等。

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]

就可以了,这样就方便了很多

您需要高效学习,找工作? 点击咨询 报名实战班

点击查看学员就业情况