ES6(四)字符串的扩展
1、字符的表示方式
最早在 \u0000-\uFFFF 之间的字符已经足够使用吗,每个字符占两个字节,超出范围,必须使用双字节形式表达,
即每个字符占四个字节。超出范围的字符,会被解读成 \uXXXX+last。
ES6中,将码点放入 大括号中,既可以正确解读该字符。
"hell\u{6F}"
'\z'
'\172'
'\x7A'
'\u007A'
'\u{7A}'
2、
一般来说,字符以 UTF-16 格式存储,每个字符固定为2字节。
超过 0XFFFF范围的字符,将会出现异常。
|
charAt |
At |
charCodeAt | codePointAt | fromCharCode | String.fromPointCode |
|
无法读取整个字符 |
可以识别Unicode编号大于 |
只能分别返回前两个字节和后两个字节 |
正确返回32位UTF-16字符码,返回的码点是十进制,使用 s.charCodeAt(2).toString(16)可以查看十六进制码点 |
不能识别32位的UTF-16字符 | String.fromCodePoint(0x20BB7) |
String.fromCodePoint(0x1f680);
3、字符串的 for...of
字符串类似于字符数组,因此,可以使用for...of 遍历字符串。
可以识别 大于 0XFFFF的码点,输出的是值,而不是 索引。
let text = '中国人民大学';
for (let item of text) {
console.log(item);
}
4、字符串的 包含判断 includes、startWidth、endWidth
/*
* 是否包含字符串相关 函数
* 1、includes() String.prototype.includes = function(searchString,position) {}
* 2、startWith() String.prototype.startsWith = function(searchString,position) {}
* 3、endWidth() String.prototype.includes = function(searchString,position) {}
*
* 均支持第二个参数,表示搜索的开始位置,
* endsWith表示第n个字符,是否有这个字符串或字符串,others第n个位置直到字符串结束之间是否有这个字符串。
* */ let source = 'jack is a good boy';
source.startsWith('j'); //true
source.endsWith('t', ); //false
source.startsWith('a',1); //true
5、字符串的自我复制 repeat()
String.prototype.repeat = function(count) {}
'na'.repeat(3);
6、模板字符串
(1)模板字符串 template string,用反引号` 标识,可以用来定义多行字符串,或者在字符串中嵌入变量
如果使用模板字符串表示多行字符串,所有空格和缩进都会被保留在输出之中,如果不需要,可用 ''.trim()除去
let x = , y = ;
`${x}+${y}=${x+y}`;
(2)模板字符串还能调用函数
const data=[
{ first:'jack',last:'Bond'},
{ first:'Tom' , last:'li'}
]; const tmpl=addrs=>`
<table>
${addrs.map(addr=>`
<tr><td>${addr.first}</td></tr>
<tr><td>${addr.last}</td></tr>
`
).join('')}
</table>
`;//使用 join 避免多行之间 多余 逗号 console.log(tmpl(data));
(3)如果需要引用模板字符串本身,应如下
let helloName='name=>`hello ${name}`',
getName=eval.call(null,helloName);
getName('jack');
(4)
String.raw 往往用来充当模板字符串的处理函数,返回一个斜杠被转移的字符串,对应于替换后的模板字符串
作为正常函数使用,它的一个参数,应该是具有raw属性的对象
String.raw = function(template,substitutions) {}
String.rawExample = function (strings, ...values) {
var output = "";
for (var index = ; index < values.length; index++) {
output += strings.raw[index] + values[index];
}
output += strings.raw[index]
return output;
}
7、标签模板
标签模板不是模板,而是函数调用的一种特殊形式,标签指 函数,模板是 参数
alert``;
let a= ,b=;
function tag(stringArr,...args){
console.log(stringArr);
} tag`hello${a+b} world ${a*b}`;
ES6(四)字符串的扩展的更多相关文章
- JavaScript学习笔记--ES6学习(四) 字符串的扩展
ES6对字符串进行了一些扩展,主要表现在对Unicode 大于\uFFFF的字符的处理上. 1. ES6中字符的Unicode表示方法 在ES5中,字符串的Unicode表示方法: \uxxxx . ...
- ES6中字符串的扩展
一.查找字符串 在ES5中,可以使用 indexOf 方法和 lastIndexOf 方法查找字符串: let str = 'hello world'; alert(str.indexOf('o')) ...
- ES6 中字符串的扩展
1. 字符的Unicode表示法 JavaScript允许采用 \uxxxx 形式表示一个字符,其中 xxxx 表示字符的 Unicode 码点. "\u0061" // 表示小写 ...
- 字符串的扩展(ES6)
文章目录 字符串的扩展 1. 字符的Unicode表示法 2. codePointAt() 3. String.fromCodePoint() 4. 字符串的遍历器接口 5. at()(提案) 6. ...
- ES6 字符串的扩展
字符的Unicode表示法 JavaScript允许采用\uXXXX形式表示一公分字符,其中XXXX表示字符的码点. "\u0061" //"a" 但是,这种表 ...
- es6 字符串的扩展和数值的扩展
es6字符串的扩展 1. es6新增的一些方法 1.1 includes 判断是否包括在内,返回一个 true or false 1.2 statsWith 判断是否以什么开头,返回一个 true o ...
- ES6中字符串扩展
ES6中字符串扩展 ① for...of 遍历字符串: 例如: for(let codePoint of 'string'){ console.log(codePoint) } 运行结果: ② in ...
- ES6的新特性(4)——字符串的扩展
字符串的扩展 ES6 加强了对 Unicode 的支持,并且扩展了字符串对象. 字符的 Unicode 表示法 JavaScript 允许采用\uxxxx形式表示一个字在\u0000~\uFFFF之间 ...
- ES6学习笔记(3)----字符串的扩展
参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 字符串的扩展ES6之前只能识别\u0000 - \uFFFF 之间的字符,超过此范围,识别会出错 ...
- ES6学习历程(字符串的扩展)
字符串的扩展 在看这一节的时候前半部分写的都是关于unicode的内容,我个人感觉这部分在实际的开发中用的很少,所以不打算在做记录,等届时用到再有针对性的看,所以就将在ES6里面关于字符串操作的一些新 ...
随机推荐
- CF Round#436 div2
额,这次的题目其实挺智障的.所以通过这次比赛,我也发现了自己是一个智障.... 不说太多,说多是泪... A. Fair Game 题意:给你一个数组,看你能否把它均分为两个所有元素均相同的子数组. ...
- C#_表达式目录树的应用
使用表达式目录树实现两个不同类型的属性赋值: public class People { public int Age { get; set; } public string Name { get; ...
- 使用github+jekyll搭建个人博客
聊聊起初 每次看到大牛们的博客,都会激起一颗一定要搭建自己博客的心,毕竟有着一颗向大牛们看齐的心.但是一直不知道如何下手,从最初的csdn写写博客到在github上建立仓库写代码分享,虽然也能够记录一 ...
- CentOS7给终端配置快捷键【转发】
1.打开Applications,选择System Tools 2.选择Setting进入如下面界面,选择Keyboard 3.选择Keyboard,进入如下面界面,再点击Shortcuts 4.再点 ...
- 自学Python5.3-内置模块(1)
内置模块(1)内置模块是Python自带的功能,在使用内置模块相应的功能时,需要 先导入 再 使用 1.OS模块 用于提供系统级别的操作: os.getcwd() 获取当前工作目录,即 ...
- cs231n --- 3 : Convolutional Neural Networks (CNNs / ConvNets)
CNN介绍 与之前的神经网络不同之处在于,CNN明确指定了输入就是图像,这允许我们将某些特征编码到CNN的结构中去,不仅易于实现,还能极大减少网络的参数. 一. 结构概述 与一般的神经网络不同,卷积神 ...
- WCF实现长连接
由于WCF的机制,连接池会在连接建立一定时间后超时,即使设置了超时时间非常长,也可能被服务端系统主动回收.之前做项目时碰到了这个问题,所以项目上考虑采用长连接,自动管理连接池,当连接超时后,自动重建, ...
- springboot命令启动
gradle打jar包命令 jar { doFirst { def jarFiles = ''; configurations.compile.collect { jarFiles += it.nam ...
- 理解Object.defineProperty()
理解Object.defineProperty() Object.defineProperty() 方法直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 基本语法:Obj ...
- 企业级nosql数据库应用与实战-redis
一.NoSQL简介 1.1 常见的优化思路和方向 1.1.1 MySQL主从读写分离 由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力.读写集中在一个数据库上让数据库不堪重负,大部 ...