Skip to content

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}"; // 😍,; 长 unicode

length

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