String
字符串的内部格式始终是 UTF-16,它不依赖于页面编码!!!
定义
js
"Hello"; // 双引号
"Hello"; // 单引号
`Hello`; // 反引号 ;ES6新增反引号是 ES6 以后新增的。支持换行 和 表达式插入。
tagged templates / 模版函数 / 字符函数
js
// srt 是 Array !
const func = (str) => console.log("hello," + str);
func`qins`; // hello,qins转义
使用 \
\n 表示换行,Windows 下,使用 两个字符的组合 \r\n 表示换行。
\ 也可以 表示 UTF-16 编码的 unicode 字符(十六进制)
js
"\u00A9"; // ©
"\u{20331}"; // 佫 ; 长 unicode ;罕见的中国象形文字
"\u{1F60D}"; // 😍,; 长 unicodelength
js
`My`.length; // 2
`My\n`.length; // 3
`\`.leangth; // error , 会将`转义。也就会变味 '`.leangth' , 也就是不完整的!转义字符,也是一个单独的 字符
字符 char
js 没有单独的字符类型
获取 char
js
let str = `Hello`;
str[0]; // H
str.charAt(0); // H
for (let char of "Hello") {
console.log(char); // H,e,l,l,o
}如果没有找到字符,
- [] 返回 undefined,
- charAt 返回 空字符串
不可变
string 是不可变的,无法修改其 char!
js
"use strict";
let str = "大王叫我来巡山";
str[0] = "小"; // Cannot assign to read only property '0' of string '大王叫我来巡山'code
js
"qins".codePointAt(0); // 113
String.fromCodePoint(113); // 'q'
(113).toString(16); // 71
("\u0071"); // q比较
所有的字符串都使用 UTF-16 编码。他们所比较多,也就是其 code。
正确的比较
正确的比较
使用 str.localeCompare(str2),支持国际化标准 ECMA-402
- 负数 : str < str2
- 正数 : str > str2
- 相等 0