ECMAScript6(4):字符串类型扩展,通用流行框架大全

//动态方法

s.includes(str, n); //s从下标 n 的字符起是否包含 str 字符串, 返回 Boolean, n 默认为 0

s.startsWith(str, n); //s从下标 n 的字符起是否以 str 开头, 返回 Boolean, n 默认为 0

s.endWith(str, n); //s的前 n 个字符是否以 str 结尾, 返回 Boolean, n 默认为字符串长度

s.repeat(n); //返回将 s 重复 n 次的新字符串, 如果 n 是小数, 会向下取整;如果 n 是 infinity 或小于等于-1 会报错;如果 n 大于-1且小于等于零, 返回空字符串;如果 n 为 NaN, 返回空字符串;其余传输参数遵循隐式类型转换。

s.padStart(minLen, str); //对于小于 minLen 长度的字符串, 在 s 前用 str 重复补充为 len 长度, 返回该新字符串, 否则返回原字符串。str默认为空格

s.padEnd(minLen, str); //对于小于 minLen 长度的字符串, 在 s 后用 str 重复补充为 len 长度, 返回该新字符串, 否则返回原字符串。str默认为空格

自定义函数计算字符串长度和大小, 以及转化为数组:

//计算字符串长度, 方法1

String.prototype.codePointLength = function(){

var result = this.match(/[\s\S]/gu);

return result ? result.length : 0;

};

//计算字符串长度, 方法2

String.prototype.codePointLength2 = function(){

return […this].length;

};

//计算字符大小

String.prototype.size = function(){

var size = 0;

for(let alpha of this){

if(alpha.codePointAt(0) > 0xFFFF){

size+=4;

} else {

size+=2;

}

}

return size;

};

var a=“?a”;

console.log(a.codePointLength()); //2

console.log(a.codePointLength2()); //2

console.log(a.size()); //6

//字符串拆分为数组,方法1

String.prototype.toArray = function(nil){

if(nil === undefined){

return Array.from(this);

}

if(nil.constructor === RegExp || nil.constructor === String){

var reg = new RegExp(nil, “u”);

return this.split(reg);

}

}

//字符串拆分为数组,方法2

String.prototype.toArray2 = function(nil){

if(nil === undefined){

return […this];

}

if(nil.constructor === RegExp || nil.constructor === String){

var reg = new RegExp(nil, “u”);

return this.split(reg);

}

}

var a=“?ds?asaf?saf”;

console.log(a.toArray()); //[“?”, “d”, “s”, “?”, “a”, “s”, “a”, “f”, “?”, “s”, “a”, “f”]

console.log(a.toArray(‘a’)); //[“?ds?”, “s”, “f?s”, “f”]

console.log(a.toArray(‘?’)); //[“”, “ds”, “asaf”, “saf”]

console.log(a.toArray2()); //[“?”, “d”, “s”, “?”, “a”, “s”, “a”, “f”, “?”, “s”, “a”, “f”]

console.log(a.toArray2(‘a’)); //[“?ds?”, “s”, “f?s”, “f”]

console.log(a.toArray2(‘?’)); //[“”, “ds”, “asaf”, “saf”]

模板字符串

ES5 中, 我们写一个多行字符很不方便:

//我们这样写动态字符串

var multiStr = "I am " + name; //假定 name 已定义

//这样写多行字符串

var multiStr = “first line\nsecond line\nthird line”;

//在或者这样

var tempArr = [“first line”, “second line”, “third line”]; //多用于生成动态字符串。此外《编写高质量代码:改善JavaScript程序的188个建议》中指出, 这个方法写静态字符串一样比加号(+)性能更好

var multiStr = tempArr.join(“\n”);

在 ES6 中利用反引号(`...`)和EL表达式(${...}), 我们可以这样:

//我们这样写动态字符串

var multiStr = I am ${name}; //假定 name 已定义

//这样写多行字符串

var multiStr = `

first line

second line

third line

`;

注意: 反引号中的所有空格和缩进都会被保留下来

EL表达式中可以放入任何表达式进行运算:

var x=2, y=3;

console.log(x+y=${x+y}); //x+y=5

function plus(a, b){

return a+b;

}

console.log(x+y=${plus(x, y)}); //x+y=5

引用模板字符串本身:

//方法1

let str = 'return ’ + ‘Hello ${name}’;

let fun = new Function(‘name’, str);

fun(‘Jack’);

//方法2

let str2 = ‘(name) => Hello ${name}’;

let fun2 = eval(str2);

fun2(‘Jack’);

标签模板

标签模板是用来处理字符串的函数, 但是调用方式和以往大不相同, 是直接将模板字符串跟在函数名后面, 该函数的结构如下:

function funName(strings, …values){

//…

}

其中, 以EL表达式作为分界, 前后和表达式之间的字符串部分, 会从左到右依次放入 strings 参数中;每一个 EL 表达式会从左到右依次放入 values 参数中:

function tag(strings, …values){

console.log(strings[0]);

console.log(strings[1]);

console.log(strings[2]);

console.log(values[0]);

console.log(values[1]);

return ‘OK’;

}

//当然, 也可以这样写(关于展开运算符, 这里不做深入讨论, 具体在 ES6 的函数部分展开)

function tag(strings, value0, value1){

console.log(strings[0]);

console.log(strings[1]);

console.log(strings[2]);

console.log(value0);

console.log(value1);

return ‘OK’;

}

下面是完整的调用:

var a = 5;

var b = 10;

function tag(strings, …values){

console.log(strings[0]); //"Hello "

console.log(strings[1]); //" world "

console.log(strings[2]); //“!”

console.log(values[0]); //15

console.log(values[1]); //50

return ‘OK’;

}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。

我特地针对初学者整理一套前端学习资料,免费分享给大家,戳这里即可免费领取

前端路线图

)**

最后

你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。

我特地针对初学者整理一套前端学习资料,免费分享给大家,戳这里即可免费领取

[外链图片转存中…(img-yyQAHPhb-1712097335200)]

vue.js的36个技巧

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值