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编号大于0xFFFF的字符

只能分别返回前两个字节和后两个字节

正确返回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(四)字符串的扩展的更多相关文章

  1. JavaScript学习笔记--ES6学习(四) 字符串的扩展

    ES6对字符串进行了一些扩展,主要表现在对Unicode 大于\uFFFF的字符的处理上. 1. ES6中字符的Unicode表示方法 在ES5中,字符串的Unicode表示方法: \uxxxx . ...

  2. ES6中字符串的扩展

    一.查找字符串 在ES5中,可以使用 indexOf 方法和 lastIndexOf 方法查找字符串: let str = 'hello world'; alert(str.indexOf('o')) ...

  3. ES6 中字符串的扩展

    1. 字符的Unicode表示法 JavaScript允许采用 \uxxxx 形式表示一个字符,其中 xxxx 表示字符的 Unicode 码点. "\u0061" // 表示小写 ...

  4. 字符串的扩展(ES6)

    文章目录 字符串的扩展 1. 字符的Unicode表示法 2. codePointAt() 3. String.fromCodePoint() 4. 字符串的遍历器接口 5. at()(提案) 6. ...

  5. ES6 字符串的扩展

    字符的Unicode表示法 JavaScript允许采用\uXXXX形式表示一公分字符,其中XXXX表示字符的码点. "\u0061" //"a" 但是,这种表 ...

  6. es6 字符串的扩展和数值的扩展

    es6字符串的扩展 1. es6新增的一些方法 1.1 includes 判断是否包括在内,返回一个 true or false 1.2 statsWith 判断是否以什么开头,返回一个 true o ...

  7. ES6中字符串扩展

    ES6中字符串扩展 ① for...of 遍历字符串: 例如: for(let codePoint of 'string'){ console.log(codePoint) } 运行结果: ②  in ...

  8. ES6的新特性(4)——字符串的扩展

    字符串的扩展 ES6 加强了对 Unicode 的支持,并且扩展了字符串对象. 字符的 Unicode 表示法 JavaScript 允许采用\uxxxx形式表示一个字在\u0000~\uFFFF之间 ...

  9. ES6学习笔记(3)----字符串的扩展

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 字符串的扩展ES6之前只能识别\u0000 - \uFFFF 之间的字符,超过此范围,识别会出错 ...

  10. ES6学习历程(字符串的扩展)

    字符串的扩展 在看这一节的时候前半部分写的都是关于unicode的内容,我个人感觉这部分在实际的开发中用的很少,所以不打算在做记录,等届时用到再有针对性的看,所以就将在ES6里面关于字符串操作的一些新 ...

随机推荐

  1. 两个实用linux小工具

    使用 sshpass 工具来做名密码输入 使用 alias 别名来做成命令语句. Linux命令之非交互SSH密码验证-sshpass ssh登陆不能在命令行中指定密码.sshpass的出现,解决了这 ...

  2. javascript设计模式——发布订阅模式

    前面的话 发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.在javascript开发中,一般用事件模型来替代传统的发布—订阅模 ...

  3. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

  4. 非常棒的教程记录(UML)

    这里暂且记录下看过的非常棒的博客吧! 来自 CSDN 几年前的博客专栏了,我只想说:经典实用的知识永远不会过时! http://blog.csdn.net/column/details/umlmode ...

  5. recover all files with git

    leon@DGLIRUAN2 /F/linux/android/leon/workspace/AngoWidget (master) $ git log commit 2f847e3a858ecb2f ...

  6. 【Java集合源代码剖析】LinkedHashmap源代码剖析

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/37867985 前言:有网友建议分析下LinkedHashMap的源代码.于是花了一晚上时间 ...

  7. ML学习分享系列(2)_计算广告小窥[中]

    原作:面包包包包包包 改动:寒小阳 && 龙心尘 时间:2016年2月 出处:http://blog.csdn.net/Breada/article/details/50697030 ...

  8. css怎样让背景充满整个屏幕

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Elasticsearch短语搜索——match_phrase

    找出一个属性中的独立单词是没有问题的,但有时候想要精确匹配一系列单词或者短语 . 比如, 我们想执行这样一个查询,仅匹配同时包含 "rock" 和 "climbing&q ...

  10. Eclipse 插件安装、升级和卸载的方法

    Eclipse 的插件可以装在内部,也可以装在外部,装在内部的方法很简单:把插件的features和plugins目录copy到eclipse的安装目录即可. eclipse和其插件升级比较频繁,用过 ...