# 字符串
# 字符串的定义
单引号、双引号:单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。
'abc'
"abc"
'key = "value"'
"It's a long journey"
1
2
3
4
5
2
3
4
5
反斜杠:如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此。
'Did she say \'Hello\'?'
// "Did she say 'Hello'?"
"Did she say \"Hello\"?"
// "Did she say "Hello"?"
1
2
3
4
5
2
3
4
5
换行:如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。
var longString = 'Long \
long \
long \
string';
longString
// "Long long long string"
1
2
3
4
5
6
7
2
3
4
5
6
7
加号:连接运算符(+)可以连接多个单行字符串,将长字符串拆成多行书写,输出的时候也是单行。
var longString = 'Long '
+ 'long '
+ 'long '
+ 'string';
1
2
3
4
2
3
4
# 转义字符
- \0 :null(\u0000)
- \b :后退键(\u0008)
- \f :换页符(\u000C)
- \n :换行符(\u000A)
- \r :回车键(\u000D)
- \t :制表符(\u0009)
- \v :垂直制表符(\u000B)
- ' :单引号(\u0027)
- " :双引号(\u0022)
- \ :反斜杠(\u005C)
console.log('1\n2')
// 1
// 2
'\a'
// "a"
"Prev \\ Next"
// "Prev \ Next"
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- Unicode
'\251' // "©"
'\xA9' // "©"
'\u00A9' // "©"
'\172' === 'z' // true
'\x7A' === 'z' // true
'\u007A' === 'z' // true
1
2
3
4
5
6
7
2
3
4
5
6
7
# 字符串的数组特性
字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)。
var s = 'hello';
s[0] // "h"
s[1] // "e"
s[4] // "o"
// 直接对字符串使用方括号运算符
'hello'[1] // "e"
'abc'[3] // undefined
'abc'[-1] // undefined
'abc'['x'] // undefined
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
但是,字符串与数组的相似性仅此而已。实际上,无法改变字符串之中的单个字符。
var s = 'hello';
delete s[0];
s // "hello"
s[1] = 'a';
s // "hello"
s[5] = '!';
s // "hello"
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
length属性返回字符串的长度,该属性也是无法改变的。
var s = 'hello';
s.length // 5
s.length = 3;
s.length // 5
s.length = 7;
s.length // 5
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# Unicode字符集
JavaScript 使用 Unicode 字符集。JavaScript 引擎内部,所有字符都用 Unicode 表示。
var s = '\u00A9';
s // "©"
var f\u006F\u006F = 'abc';
foo // "abc"
1
2
3
4
5
2
3
4
5
# Base64转码
所谓 Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、a-z、+和/这64个字符组成的可打印字符。
btoa():任意值转为 Base64 编码
atob():Base64 编码转为原来的值
var string = 'Hello World!';
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"
1
2
3
2
3
注意,这两个方法不适合非 ASCII 码的字符,会报错
btoa('你好') // 报错
function b64Encode(str) {
return btoa(encodeURIComponent(str));
}
function b64Decode(str) {
return decodeURIComponent(atob(str));
}
b64Encode('你好') // "JUU0JUJEJUEwJUU1JUE1JUJE"
b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE') // "你好"
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12