【ES6】学习笔记:字符串扩展

博文类型: 学习向
背景: 学习ES6语法并做学习笔记
目标: 跟着ES6教程实操,并记录实操结果


一、字符串扩展

JavaScript:允许采用\u 的形式来表示一个字符,但是单个字符不能超过\uFFFF,如果超过了,则需要使用双字节来表示。
ES6:可以用\u{xxxx}来表示超过\uFFFF 的字符。

1.fromCodePoint


作用:可以识别码点大于 0xFFFF 的码点,从码点返回字符串。

//不能识别码点大于0xFFFF的字符串
console.log(String.fromCharCode(0x20bb7));
// "ஷ"

//可以识别码点大于0xFFFF的字符串
console.log(String.fromCodePoint(0x20bb7));
//𠮷

2.raw


作用
1.转义模板语法的斜杠
2.作为函数拼接数组

//1.转义模板语法的斜杠
console.log("hello\nli");
//hello
//li

console.log(String.raw`hello\nli`);
//hello\nli

//2.拼接数组
console.log(String.raw({ raw: ["hello", "li"] }, "\n"));
//hello
//li

3.codePointAt


JavaScript 中,字符串以 UTF-16 的格式存储,每个字符固定为 2 个字节。对于需要四个字节存储的字符(码点大于 0xFFFF),传统的 charAt 方法无法获得码点,charCodeAt 方法只能分别获取前两个字节和后两个字节。
作用
获取需要四个字节存储的字符的码点。

let val = "𠮷a"; //码点:0x20BB7,UTF-16:0xD842 0xDFB7,十进制:55362 57271
console.log(val.length);
// 3
console.log(val.charAt(0));
// �
console.log(val.charAt(1));
// �
console.log(val.charAt(2));
// a
console.log(val.charCodeAt(0));
// 55362
console.log(val.charCodeAt(1));
// 57271
console.log(val.charCodeAt(2));
// 97
console.log(val.codePointAt(0));
// 134071
console.log(val.codePointAt(0).toString(16));
// 20bb7
console.log(val.codePointAt(1));
// 57271
console.log(val.codePointAt(2));
// 97
console.log(val.codePointAt(2).toString(16));
// 61

//由于codePointAt中a明明是在第二个,而序号却是第三个,想要序号与位置一一对应,可以用遍历来处理
let val = "𠮷a";
for (let item of val) {
  console.log(item.codePointAt(0).toString(16));
}
//20bb7
//61

4.normalize


许多欧洲语言有语调符号和重音符号。
Ǒ 有两种方式表示这个字符:
1.\u01D1
2.O(\u004F)和 ˇ(\u030C)=Ǒ(\u004F\u030C)
作用: 使两种表示方式统一,并使它们相等,称作 Unicode 正规化

console.log("\u01D1" === "\u004F\u030C");
//false

console.log("\u01D1".length);
//1

console.log("\u004F\u030C".length);
//2

console.log("\u01D1".normalize() === "\u004F\u030C".normalize());
//true

5.inclouds 和 indexOf 和 startsWith 和 endsWith


作用
inclouds:字符串、数组是否包含某元素,如果包含则返回 true
indexOf:字符串、数组是否包含某元素,如果包含则返回下标
startsWith:字符串是否以某一元素开头,如果是则返回 true
endsWith:字符串是否以某一元素结尾,如果是则返回 true

let a = [2, 3, 4];
let b = "abc";
console.log(a.indexOf(2));
//0

//以下方法是es6的方法
console.log(a.includes(2));
//true

console.log(a.includes(3, 1));
//true 从第2位开始包含第2位,后面包含3则返回true

console.log(a.startsWith(2));
//error

console.log(a.endsWith(4));
//error

console.log(b.indexOf("b"));
//1

console.log(b.includes("b"));
//true

console.log(b.includes("b", 2));
//false 从第3位开始包含第3位,后面包含b则返回true

console.log(b.startsWith("a"));
//true

console.log(b.startsWith("a", 1));
//false 从第2位开始包含第2位,后面是否以a开头,如果是则返回true

console.log(b.endsWith("c"));
//true

console.log(b.endsWith("a", 1));
//true 前1位是否以a结尾,如果是则返回true

6.repeat


作用:重复字符串

let b = "abc";
console.log(b.repeat(2));
//abcabc

7.padStart padEnd


作用:前填充,尾填充,不需填充不填充

let a='acb'
console.log(a.padEnd(6,'1234'));
//acb123

console.log(a.padStart(6,'1234'));
//123acb

console.log(a.padStart(6));
//   acb

8.标签模板


作用:函数后面可以直接跟一个模板字符串,这个模板字符串可以被该函数调用。这被称为“标签模板”功能

let a='c'
let b='w'
let c=`超级${a},无敌${b}`
function fc(){
	console.log(arguments);
}
fc`超级${a},无敌${b}`
//[['超级','无敌',''],'c','w']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6引入了一种新的字符串字面量,即模板字符串。模板字符串使用反引号(`)表示,并且可以包含多行文本和变量插入。与传统的字符串相比,模板字符串更加灵活和方便。 在最简单的情况下,模板字符串可以看作是普通的字符串。例如,你可以直接使用模板字符串输出回车换行符。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ES6: 模板字符串](https://blog.csdn.net/gao_zhennan/article/details/125649199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [详解JavaScript ES6中的模板字符串](https://download.csdn.net/download/weixin_38682254/13624302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ES6中模板语法与字符串处理](https://blog.csdn.net/y_l33/article/details/128690395)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值