字符串可以包含在单引号、双引号或反引号中:
let single = 'single-quoted';
let double = "double-quoted";
let backticks = `backticks`;
反引号允许我们通过 ${…}
将任何表达式嵌入到字符串中:
function sum(a, b) {
return a + b;
}
alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
使用反引号的另一个优点是它们允许字符串跨行:
let guestList = `Guests:
* John
* Pete
* Mary `;
alert(guestList); // 客人清单,多行
特殊字符:
字符 | 描述 |
---|---|
\n | 换行 |
\r | 回车:不单独使用。Windows 文本文件使用两个字符 \r\n 的组合来表示换行。 |
\' , \" | 引号 |
\\ | 反斜线 |
\t | 制表符 |
\b , \f , \v | 退格,换页,垂直标签 —— 为了兼容性,现在已经不使用了。 |
\xXX | 具有给定十六进制 Unicode XX 的 Unicode 字符,例如:'\x7A' 和 'z' 相同。 |
\uXXXX | 以 UTF-16 编码的十六进制代码 XXXX 的 unicode 字符,例如 \u00A9 —— 是版权符号 © 的 unicode。它必须正好是 4 个十六进制数字。 |
\u{X…XXXXXX} (1 到 6 个十六进制字符) | 具有给定 UTF-32 编码的 unicode 符号。一些罕见的字符用两个 unicode 符号编码,占用 4 个字节。这样我们就可以插入长代码了。 |
所有的特殊字符都以反斜杠字符 \
开始。它也被称为“转义字符”。
length
属性表示字符串长度str.length
访问字符
[pos]或者str.charAt(pos)
如果没有找到字符,
[]
返回undefined
,而charAt
返回一个空字符串
字符串遍历:
for (let char of "Hello") {
alert(char);
// H,e,l,l,o(char 变为 "H",然后是 "e",然后是 "l" 等)
}
改变大小写 :
alert( 'Interface'.toUpperCase() ); // INTERFACE
alert( 'Interface'.toLowerCase() ); // interface
查找子字符串:
第一个方法是 str.indexOf(substr,pos)
它从给定位置
pos
开始,在str
中查找substr
,如果没有找到,则返回-1
,否则返回匹配成功的位置。str.lastIndexOf(substr, pos)
它从字符串的末尾开始搜索到开头,它会以相反的顺序列出这些事件。
includes,startsWith,endsWith
str.includes(substr,pos)根据
str
中是否包含substr
来返回true/false
获取子字符串:
JavaScript 中有三种获取字符串的方法:
substring
、substr
和slice
。
str.slice(start [, end])
返回字符串从 start
到(但不包括)end
的部分。
let str = "stringify";
alert( str.slice(0, 5) ); // 'strin',从 0 到 5 的子字符串(不包括 5)
alert( str.slice(0, 1) ); // 's',从 0 到 1,但不包括 1,所以只有在 0 处的字符
如果没有第二个参数,slice
会一直运行到字符串末尾:
let str = "stringify";
alert( str.slice(2) ); // 从第二个位置直到结束
start/end
也有可能是负值。它们的意思是起始位置从字符串结尾计算:
let str = "stringify"; // 从右边的第四个位置开始,在右边的第一个位置结束
alert( str.slice(-4, -1) ); // 'gif'
str.substring(start [, end])
返回字符串在
start
和end
之间 的部分。这与
slice
几乎相同,但它允许start
大于end
。
let str = "stringify"; // 这些对于 substring 是相同的
alert( str.substring(2, 6) ); // "ring"
alert( str.substring(6, 2) ); // "ring"
str.substr(start [, length])
返回字符串从
start
开始的给定length
的部分。与以前的方法相比,这个允许我们指定
length
而不是结束位置:let str = "stringify";
alert( str.substr(2, 4) ); // 'ring',从位置 2 开始,获取 4 个字符
方法 | 选择方式…… | 负值参数 |
---|---|---|
slice(start, end) | 从 start 到 end (不含 end ) | 允许 |
substring(start, end) | start 与 end 之间(包括 start ,但不包括 end ) | 负值代表 0 |
substr(start, length) | 从 start 开始获取长为 length 的字符串 | 允许 start 为负数 |
比较字符串:
小写字母总是大于大写字母:
alert( 'a' > 'Z' ); // true
str.codePointAt(pos)
返回在 pos
位置的字符代码 :
// 不同的字母有不同的代码
alert( "z".codePointAt(0) ); // 122
alert( "Z".codePointAt(0) ); // 90
String.fromCodePoint(code)
通过数字 code
创建字符
alert( String.fromCodePoint(90) ); // Z