【es6】字符串的扩展

字符串

Unicode表示法

1.采用\uxxxx表示字符,仅限\u0000 ~ \uFFFF
2.超过部分会理解成加法如:
“\u20BB7”理解为\u20BB + 7
es6写法要求将码点放入大括号即可正确解读,如:
“\u{20BB7}”
“\u41” //SyntaxError: Invalid Unicode escape sequence
“\u{41}” //A
3. 大括号表示法和四字节的UTF-16编码等价

codePointAt()

1.js内字符以UTF-16格式存储,每个字符两个字节,需4字节存储的字符(码点大于0xFFFF),js认为其是2个字符(测试发现不会将所有汉字认为是两个字符的)

    var s = "��";
    s.length //2
    s.charAt(0) //''
    s.charAt(1) //''
    s.charCodeAt(0) //55362
    s.charCodeAt(1) //57271
    '��'.charCodeAt(0) //55357
    var s = "��a";
    s.codePointAt(0) //134071
    s.codePointAt(1) //57271(后两个字节)
    s.codePointAt(2) //97

2.codePointAt返回码点十进制值,可使用toString转换
s.codePointAt(0).toString(16) //”20BB7”
3.for…of循环可以识别32位UTF-16字符

    for (let ch of s){
        console.log(ch.codePointAt(0))
    }
    //134071
    //97

4.测试字符为2字节还是4字节:

    function is32Bit(c){
        return c.codePointAt(0) > 0xFFFF;
    }

String.fromCodePoint()

1.String.fromCharCode()返回码点对应的字符串(无法识别32位,会将超出位数舍弃)

    String.fromCharCode(0x20BB7) //"ஷ"
    String.fromCharCode(0x0BB7) //"ஷ"

2.String.fromCodePoint()可识别大于0xFFFF字符,多个参数时合并为一个字符串返回

    String.fromCodePoint(0x78, 0x1f680, 0x79); //"x��y"

3.定义在String对象上

字符串的遍历器接口

1.可使用for…of循环遍历,识别大于0xFFFF码点,传统for循环无法识别

at()

1.(ES7提供目前不适用)可识别大于0xFFFF码点,es5的charAt()方法无法识别

normalize() | Unicode正规化

语调和重音符号的表示方法:
1. 直接使用带重音符号字符,如 Ǒ ("\u01D1")
2. 合成符号, 如 Ǒ ("\u004f\u030c")

1.但是’\u01D1’ == ‘\u004f\u030c’ //false(因为前者length=1,后者length=2)
2.’\u01D1’.normalize() == ‘\u004f\u030c’.normalize() //true
3.normalize()接受’NFC’(返回字符合成形式),’NFD’(返回字符分解形式),’NFKC’,’NFKD’四个参数
4.无法识别3个及3个以上的字符合成
“\u004f\u030c\u030c” //Ǒ̌

includes(),startsWidth(),endsWidth() | 字符串搜索

1.原:indexOf()
新增:
includes() 是否包含
startsWidth() 是否以xx开头
endsWidth() 是否以xx结尾
2.第二个参数:开始搜索的位置
3. 返回布尔值

repeat() | 字符串重复

1.将原字符串重复几次,返回新字符串
2.参数为小数会将小数位丢掉(‘-0.9’丢掉小数位为’-0’,即’0’)
3.参数为负数Infinity,报错
4.参数为NaN 等同于 0
5.参数为字符串会先转换为数字

padStart(), padEnd() | 字符串补全

  1. 第一个参数:字符串最小长度; (原字符串长度大于指定最小长度,返回原字符串)
    第二个参数:用来补全的字符串(省略使用空格补全)
    'x'.padStart(4, 'ab') //abax

模板字符串

    $('#result').append(`
      There are <b>${basket.count}</b> items
       in your basket, <em>${basket.onSale}</em>
      are on sale!
    `);
  1. ‘`’反引号内可为:普通字符串,多行字符串,变量(用${}访问)
  2. 若模版字符串中需要用到反引号,前面要加反斜杠转义
  3. 所有的空格,缩紧,回车都会被保留在输出中
  4. 访问变量的${}中可以是表达式,也可以是函数
    var obj = {x:1, y:2};
    `${obj.x} + ${obj.y}`
    //3
    function f(){}
    `${f()}`
  1. 若大括号中不是字符串,则按一般规则其转化为字符串
  2. 模板中的字符变量没有声明,报错
  3. 引用模板字符串本身(没看懂)

模板编译

  1. (没看懂)

标签模板

  1. 函数名加模板字符串,用此函数来处理模板字符串
    alert`aaa`
    alert(aaa)

    var a = 5
    var b = 10
    tag`Hello ${ a + b } world ${ a * b }`;
    //字符串返回给函数的第一个参数:['Hello', 'world', '']
    //第二个参数:15
    //第三个参数:50
  1. 使用函数处理字符串,接收多个参数
    第一个:数组,变量外的字符串[‘Hello’, ‘world’, ”]
    第二 ~ n 个参数:变量计算后的值 ,在这里第二个参数是15 第三个参数是50
  2. 应用:过滤html字符串中的特殊字符,防止恶意输入
    多语言转换(i18n)
    自定义模板处理函数(hashTemplate)
    js中嵌入其他的语言(jsx)
  3. 函数处理字符串,字符串的返回值,第一个参数还有一个raw属性,也指向一个数组,内容与原第一个参数的区别是里面的反斜杠被转义了
    tag`First line\nSecond line`
    function tag(strings) {
      console.log(strings.raw[0]);
      // "First line\\nSecond line"
    }

String.raw() | 将字符串中的反斜杠转义

1.String.raw\n 输出 \n (已转义的不再转义)

    String.raw({ raw: 'test' }, 0, 1, 2);
    // 't0e1s2t'
    // 等同于
    String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程总体架构请观看89讲。数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。数据仓库的应用有:1.数据分析、数据挖掘、人工智能、机器学习、风险控制、无人驾驶。2.数据化运营、精准运营。3.广告精准、智能投放等等。数据仓库是伴随着企业信息化发展起来的,在企业信息化的过程中,随着信息化工具的升级和新工具的应用,数据量变的越来越大,数据格式越来越多,决策要求越来越苛刻,数据仓库技术也在不停的发展。数据仓库有两个环节:数据仓库的构建与数据仓库的应用。随着IT技术走向互联网、移动化,数据源变得越来越丰富,在原来业  务数据库的基础上出现了非结构化数据,比如网站log,IoT设备数据,APP埋点数据等,这些数据量比以往结构化的数据大了几个量级,对ETL过程、存储都提出了更高的要求。互联网的在线特性也将业务需求推向了实时化 ,随时根据当前客户行为而调整策略变得越来越常见,比如大促过程中库存管理,运营管理等(即既有中远期策略型,也有短期操作型)。同时公司业务互联网化之后导致同时服务的客户剧增,有些情况人工难以完全处理,这就需要机器 自动决策 。比如欺诈检测和用户审核。总结来看,对数据仓库的需求可以抽象成两方面: 实时产生结果、处理和保存大量异构数据。本课程基于真实热门的互联网电商业务场景为案例讲解,结合分层理论和实战对数仓设计进行详尽的讲解,基于Flink+DorisDB实现真正的实时数仓,数据来及分析,实时报表应用。具体数仓报表应用指标包括:实时大屏分析、流量分析、订单分析、商品分析、商家分析等,数据涵盖全端(PC、移动、小程序)应用,与互联网企业大数据技术同步,让大家能够学到大数据企业级实时数据仓库的实战经验。本课程包含的技术: 开发工具为:IDEA、WebStorm Flink 1.11.3Hadoop 2.7.5Hive 2.2.0ZookeeperKafka 2.1.0、Spring boot 2.0.8.RELEASESpring Cloud Finchley.SR2Flume 、Hbase 2.2.6DorisDB 0.13.9、RedisVUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav等课程亮点: 1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink最新版4.真正的实时数仓以及分层设计5.海量数据大屏实时报表6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.数据库实时同步解决方案9.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav10.集成SpringCloud实现统一整合方案11.互联网大数据企业热门技术栈12.支持海量数据的实时数仓报表分析13.支持全端实时实时数仓报表分析14.全程代码实操,提供全部代码和资料 15.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值