文本*:
定义:表示文本的 JS 类型是字符串。
-
字符串是不可修改的,以 16 个二进制位为一个单位的 “16 位值” 序列,通常一个 16 位值表示一个 Unicode 字符。
-
字符串长度是它所包含的 16 位值的个数。JavaScript 的字符串和数组都是用从 0 开始的下标索引。第一个 16 位值在位置 0,第二个在位置 1,以此类推。空字符串的长度是 0。不像某些其他语言那样存在字符类型,对于单个字符,在 JS 中就表示为含有一个字符的字符串。
-
JavaScript 使用 Unicode 字符集的 UTF-16 编码,JavaScript 字符串其实是无符号的 16 位值的序列。最常见的 Unicode 字符用 16 位二进制都能表示得下。但也存在少量的 Unicode 字符需要用两个 16 位才能装得下。比如 :
所以,”字符串的 length 属性表示字符串中的字符个数“这句话对吗?大多数情况是对的,但并不准确,准确的说是表示字符串中 16 位值的个数。
对字符串使用数组下标取值时,按 16 位为单位读取,而未必是字符单位。用比较运算符比较两个字符串时,也是以 16 位值为单位依次比较编码值的大小。
在 ES6 中,字符串是可迭代物,如果对字符串使用 for/of 循环或者散列操作符,那将会按实际字符为单位遍历,而不是按 16 位值。
1 字符串字面量
- String类型
JavaScript 中表示文本的类型是 String ,即字符串。
每个值都表示Unicode字符。
JavaScript的字符串(以及数组)使用基于零的索引
要JavaScript可以把字符串放到一对匹配的单引号,双引号还在反引号,双引号字符和反引号。
反引号 定界字符串是ES6的特性 :允许在字符串字面量中包含(或者插入)JavaScript表达式
JavaScript最早版本要求字符串字面量必须写在一行,使用+操作符把单行字符串拼接成长字符串的JavaScript代码
"hello"+"word"
但是到了es5 ,我们可以在后面加一个\从而把字符串字面量写到多行上
"weo/fff"
"weo\
fff\
"
到了es6反引号语法支持跨行字符串
` sssssssssssss
ssssssssssssss
ssssssssssssss`
注意
最好JavaScript和HTML分别使用不同的引号
字符串字面量中的转义序列
反斜杠(/)在JavaScript字符串中有特殊作用,
它与后面的字符组合在一起,
可以在字符串中表示一个无法直接表示字符
比如说\n是一个表示换行符的转义序列
要在 JavaScript 程序中包含字符串,可以 符串放到 对匹配的单引号、双引号或者
反引号(\”或、)中。
双引号字符和反引号可以出现在由 引号定界的 符串中, 同理
由双引号和反引号定界的 符串里 可以包含另外两种引号。
字符串字面量
的例子:
'' ''//空字符串 即有零个字符
’ testing'
” 3.14”
nafTle =” fTlyfo fTI "’
”Wouldn ’ t you efe 'Rei. lly ’s book?”
” I i.s the ati.o of a ci. cle's ci. CUfTlfe ence to i.ts adi.us
、” She sai.d 'hi.' ", he sai.d.
- 使用反引号定界 符串是 ES6 的特性,允许在丰符串 字面量中包含(或插入 JavaScript
表达式。
JavaScript 最早的版本要求字符串字面 必须 ,使用+ 操作符把单行字符串
接成长字符串的 JavaScript 代码随处可见。 - 到了 ES5 ,我们可以在每行末尾加一个反斜杠( \)从而 字符串字面量写到多行上。
这个反斜杠和它后面的行终结符都不 不属于字符。 - ES6 的反引号支持跨行字符串,而行终结符 是字符串字面量的一部分
//写在一行但表两行的字符串
'two\nli.nes’
//写在三行但只有一行的字符串
one\
long\
li.ne"
//写在两行实际也是两行的字符串:
the newli.ne cha acte at the end of thi.s li.ne
i.s i.ncluded li.te ally i.n thi.s st i.ng
3 使用字符串
定义:
拼接 符串是 JavaScript 个内置特性 果对数值使用 操作符,那数值会相加。
如果对字符串使用 +操作符,那字符串会拼接起来(第 个在第 个后面) 。
例如:
let name = ”Hello,” + "wo ld //产生字符串 Hello, WO ld
let greeting= "We lcofTle to fTIY blog , ” +””+ nafTle;
- 以使用标准的全等 === 和不全等 !== 操作符比较字符串。
- 字符串 也可以使** <、<=、>、>=**操作符来比较
注意:
要确定 个字符串的长度(即 符串包含的 16 位值的个数), 以使用字符串的 length属性
- 除了 length 属性之外, JavaScrip 还提供了操作字符串的丰富 API
记住, JavaScript 中的字符串是不可修改的。像replace ()和 toUppe rCase () 这样的方法都返回新字符串,它们并不会修改调用它们的字符串。
字符串 也可以被 成只读数组,使用方括号而非 cha At () 方法访问字符串中个别的字
符( 16 值):
let s =”hello, wo ld";
s.4 模板字面量0] //=>'h'
s[s. length -1) //=>"d"
4. 模板字面量
定义:面量可以用反引号来定界。
let a=hello world
;
- 模板字面量可 以包含任意
JavaScript 表达式。
反引号中字符串 字面量最终值的计算, 步及对其中包 的所有表达
式求值、将这些表达式的值转换为字符串,然后再把这些 符串与反引号中的字面
组合:
let nar1e =”Bi.ll”;
let greeting = ` Hello${ nar1e }//greeting=="Hello Bill."
5. 模式匹配
定义:
JavaScript 定义了 种被称为正则表达式(或 RegExp )的数据类型,用于描述和匹配文
本中的字符串模式。
于Reg ExP 很强大,用于处理文本,简单介绍下;
- 对斜杠之间的文本构成正则表达式 面量。这对斜杠中的第 个后面也可以跟 个或
多个字母,用于修改模式的含义。
/^HTML/; //匹配字符串开头的字母html
/[1-9][0-9]*/ ; //匹配非0数字,后面跟着任意数字;
RegExp 对象定义了 些有用的方法,而字符串也有接收 RegExp 参数的方告。例如:
let text = ”testi.ng: 1, 2, 3'’ ; //示例文本
let patte = /\d+/g ; //匹配一个或多个数字
pattern . test(text)// => true :存在匹配项
text.seach(pattern)// => 第一个匹配项的位置
//写在一行但表示两行的字符串
'two\nli.nes’
//写在三行但只有一行的字符串
one
long\
li.ne"
//写在两行实际也是两行的字符串:
the newli.ne cha acte at the end of thi.s li.ne
i.s i.ncluded li.te ally i.n thi.s st i.ng
3 使用字符串
定义:
拼接 符串是 JavaScript 个内置特性 果对数值使用 操作符,那数值会相加。
如果对字符串使用 +操作符,那字符串会拼接起来(第 个在第 个后面) 。
例如:
let name = ”Hello,” + "wo ld //产生字符串 Hello, WO ld
let greeting= "We lcofTle to fTIY blog , ” +””+ nafTle;
- 以使用标准的全等 === 和不全等 !== 操作符比较字符串。
- 字符串 也可以使** <、<=、>、>=**操作符来比较
注意:
要确定 个字符串的长度(即 符串包含的 16 位值的个数), 以使用字符串的 **len
注意:
要确定 个字符串的长度(即 符串包含的 16 位值的个数), 以使用字符串的 length属性
- 除了 length 属性之外, JavaScrip 还提供了操作字符串的丰富 API
记住, JavaScript 中的字符串是不可修改的。像replace ()和 toUppe rCase () 这样的方法都返回新字符串,它们并不会修改调用它们的字符串。
字符串 也可以被 成只读数组,使用方括号而非 cha At () 方法访问字符串中个别的字
符( 16 值):
let s =”hello, wo ld";
s.4 模板字面量0] //=>'h'
s[s. length -1) //=>"d"
4. 模板字面量
定义:面量可以用反引号来定界。
let a=hello world
;
- 模板字面量可 以包含任意
JavaScript 表达式。
反引号中字符串 字面量最终值的计算, 步及对其中包 的所有表达
式求值、将这些表达式的值转换为字符串,然后再把这些 符串与反引号中的字面
组合:
let nar1e =”Bi.ll”;
let greeting = ` Hello${ nar1e }//greeting=="Hello Bill."
5. 模式匹配
定义:
JavaScript 定义了 种被称为正则表达式(或 RegExp )的数据类型,用于描述和匹配文
本中的字符串模式。
于Reg ExP 很强大,用于处理文本,简单介绍下;
- 对斜杠之间的文本构成正则表达式 面量。这对斜杠中的第 个后面也可以跟 个或
多个字母,用于修改模式的含义。
/^HTML/; //匹配字符串开头的字母html
/[1-9][0-9]*/ ; //匹配非0数字,后面跟着任意数字;
RegExp 对象定义了 些有用的方法,而字符串也有接收 RegExp 参数的方告。例如:
let text = ”testi.ng: 1, 2, 3'’ ; //示例文本
let patte = /\d+/g ; //匹配一个或多个数字
pattern . test(text)// => true :存在匹配项
text.seach(pattern)// => 第一个匹配项的位置
网友评论