es6 字符串与正则表达式 学习总结

简介: es6 字符串与正则表达式 学习总结
 <!-- 
    ==================es6 字符串 unicode===============
    文字编码:早期计算机的资源宝贵,内存大小比较小。unnicode使用16位二进制来存储文字,
    我们将一个16位二进制叫做一个码元(code unit)。 2^16
    后来,由于技术的发展, unicode对文字编码进行了扩展, 将某些文字扩展到了32位(占用2个码元),
    并且,将某个对应的二进制数字叫做码点(code point)。 2^32
    js 获取字符串的长度是根据码元来的
    例如:
    const text = '𠮷';
    console.log("字符串长度:",text.length) // 2
    console.log("使用正则测试:", /^.$/.text(text)) // false
    console.log("使用正则测试:", /^.$/u.text(text)) // true 使用flag u,就是使用码点来进行判断
    console.log("获取第一个码元:", text.charCodeAt(0)) // 结果是一个16进制的数
    console.log("获取第二个码元:", text.charCodeAt(1)) // 结果是一个16进制的数
    console.log("获取第一个码点:",text.charPointAt(0))
    es6为了解决上面的方法: 提供了一个方法: charPointAt() 根据字符串码元的位置,获取码点
    <script>
        /**
        *判断字符串是否为32为的
        */
        function is32Bit(char, i) {
            // 如果码点大于了16位进制的码点,则是证明该字符串为32位的
            return char.codePointAt(i) > 0xffff;
        }
    </script>
     // 获取字符串的真实长度, 码点与码元
        function getLenfthOfCodePoint(str) {
            let len = 0;
            for (let i = 0; i < str.length; i++) {
                const element = str[i];
                // 如果码点大于16为进制的码点
                if (element.codePointAt(i) > 0xffff) {
                    // i在索引码元, 在i这个位置, 占用了两个码元(1个码点)
                    i++;
                }
                len++;
            }
            return len;
        }
     =======================es6新增的api, 正则==================
        es6新增字符串api, 以下均为字符串的实例方法, 也就是原型方法
        includes(str, index): 判断字符串中是否包含指定的子字符串, 返回一个Boolean 值
        里面俩个参数, str是需要查找的子字符串, index 是从哪个位置开始查找,不传是从0开始
        例如:
        const text = "abcdefg";
        text.includes("a")  // true
        startWith(str,index): 判断字符串是否以指定的字符串开始, 返回一个Boolean
        里面俩个参数, str是需要查找开头的子字符串, index 是从哪个位置开始查找,不传是从0开始
        例如:
        const text = "abcdefg";
        text.startWith("abc") // true
        endsWith(str,index): 判断字符串是否以指定的字符串结尾,返回一个Boolean值
        里面俩个参数, str是需要查找结尾的子字符串, index 是从哪个位置开始查找,不传是从0开始
        例如: const text = "abcdef";
        text.endsWith("def") // true
        repeat(num): 将字符串需要重复多少次, 并且返回一个重复次数的而字符串
        例如:
        const text = "abc";
        text.repeat(2) //abcabc
        正则中黏连标记, 一般项目中不这么用
        标记名: y 匹配时, 完全按照正则对象中的lasteIndex位置开始匹配,并且匹配的位置必须在lastIndex位置
        例如:
        const text = "Hello World!";
        const reg = /W\w+/;
        text.test(reg)  // true
        但是把如果是这种情况下面: const reg1 = /W\w+/y;
        text.test(reg1)  // false
        因为lasteIndex = 0, 必须匹配第0个位置, 但是第0个位置不是W, 所以返回false
        如果把 lasteIndex 改成对应的位置6的话, 那就可以匹配成功,
        ====================es6的模板字符串============================
        es6之前处理繁琐的字符串:
        1. 处理换行的字符串
        2. 字符串的拼接
        在es6中,提供模板字符串书写,可以非常方便的换行,要做的是``,在这里面写就可以
        1. 换行直接在``按enter就好
        2. 拼接字符串 在``里使用${} 里面使用变量就好,里面可以是任何有意义的表达式
        模板字符串标记
        const love1 = "abc";
        const love2 = "def";
        const text = myTag`第一个字符串${love1},第二个字符串${love2}`;
        上面的text相当于 text = myTag(["第一个字符串",",第二个字符串"],"abc","def");
        这个myTag遇到${}进行分隔
        function myTag(parts) {
            // 获取除了第一个数组外的其他参数
            const values = Array.prototype.slice.apply(arguments).slice(1);
            // parts.length = values.length + 1
            let str = "";
            for (let i = 0; i < values.length; i++) {
                const element = values[i];
                // 在这里可以在每一个插入参数的时候,可以进行做逻辑修改, 如 用户需要输入的值进行值转义
                str += parts[i] + element
                if (i === values.length - 1) {
                    str += parts[i + 1];
                }
            }
            return str;
        }
        String.row 输出模板字符串里面的转义字符串
        例如: String.row`abc\t\nbcd`  //abc\t\nbcd
        // 在模板字符串里面可以加上标记:
        标记名`模板字符串`
        比较是一个函数,函数如下:
        1.参数一被插值分隔的字符串数组
        2. 后续参数: 所有的插值
相关文章
|
2月前
|
JavaScript 前端开发 Java
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
|
2月前
|
Java API 索引
U4字符串以及正则表达式
【10月更文挑战第19天】在 Java 中,字符串是重要数据类型,支持多种操作如长度获取、字符访问、子串提取等。正则表达式提供强大的模式匹配和文本处理功能,通过 `Pattern` 和 `Matcher` 类实现。示例代码展示了如何使用正则表达式匹配单词字符。常用语法包括字符类、数量词、边界匹配和分组。
|
2月前
|
测试技术 Perl
一个提高效率的工具,正则表达式,值得学习一下!
一个提高效率的工具,正则表达式,值得学习一下!
|
2月前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
24 0
|
3月前
|
JavaScript 前端开发 Java
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
152 5
|
3月前
|
前端开发 C#
C# 一分钟浅谈:字符串操作与正则表达式
本文详细介绍C#中的字符串操作与正则表达式应用,涵盖字符串拼接、分割、查找及替换等基础操作,并通过实例讲解正则表达式的模式匹配、文本替换与分组捕获技巧。同时,文章还探讨了性能优化、复杂度管理和安全性等问题及解决策略,助你提升编程效率,应对实际开发挑战。
84 0
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
|
5月前
|
存储 JavaScript 前端开发
|
6月前
|
数据采集 Java 开发者
正则表达式替换字符串的最佳实践与应用
正则表达式替换字符串的最佳实践与应用
|
6月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
66 2