字符串

239 阅读3分钟

1.概述

1.1定义

  • 字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
  • 单引号字符串内部可以使用双引号;双引号字符串内部可以使用单引号
  • 若要在单引号内部使用单引号,必须在单引号前加反斜杠转义
  • 由于HTML语言的属性值使用双引号,所以很多项目约定Javascript语言的字符串只使用单引号
  • 连接运算符(+)可以连接多个单行字符串。

1.2转义

反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所有又称为转义符。

  • \0 :null(\u0000
  • \b :后退键(\u0008
  • \f :换页符(\u000C
  • \n :换行符(\u000A
  • \r :回车键(\u000D
  • \t :制表符(\u0009
  • \v :垂直制表符(\u000B
  • ' :单引号(\u0027
  • " :双引号(\u0022
  • \ :反斜杠(\u005C) 反斜杠还有三种特殊用法:
  • \HHH:反斜杠后面紧跟三个八进制数(000-377),代表一个字符
  • \xHH:\x后面紧跟两个十六进制数(00-FF),代表一个字符
  • \uXXXX:\u后面紧跟四个十六进制数(0000-FFFF),代表一个字符
  • 如果在非特殊字符前面使用反斜杠,反斜杠会被省略;反斜杠前加一个反斜杠用来对自身转义

1.3字符串与数组

  • 字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)
  • 若方括号中的数字超过字符串长度或方括号中不是数字,返回undefined
  • 字符串与数组的相似性仅此而已,实际上无法改变字符串

1.4length属性

  • length属性返回字符串长度,该属性也无法改变

2.字符集

  • JavaScript使用Unicode字符集,JavaScript引擎内部,所有字符都用Unicode表示。
  • 程序中也可使用Unicode码点表示字符
  • 解析代码时,JavaScript会自动识别字符时字面形式还是Unicode形式,输出给用户时,所有字符转成字面形式
  • 每个字符在JavaScript内部都是以16位(2个字节)的UTF-16格式储存。
  • JavaScript对UTF-16的支持不完整,只支持两字节的字符,不支持四字节的字符
  • 总结:对于码点在U+10000到U+10FFFF之间的字符,JavaScript总是认为它们时两个字符(length属性为2),也就是说,JavaScript返回的字符串长度可能是不正确的

3.Base64转码

  • 有时文本里包含不可打印的符号,比如ASCII码0-31的符号,此时可以使用Base64编码,转换成可以打印的字符
  • 有时需要以文本格式传递二进制数据,也可以使用Base64编码
  • 所谓Base64就是一种编码方法,可以将任意值转成09、AZ、a~z、+和/这64个字符组成的可打印字符,目的是为了不出现特殊字符,简化程序处理
  • JavaScript原生提供两个Base64相关方法:btoa():任意值转为Base64编码;atob():Base64编码转为原来的值
  • 非ASCII码字符转为Base64编码,中间插入一个转码环节,需要使用另外两个方法:encodeURIComponent()、decodeURIComponent()