ES6字符串扩展方法

'\z'==='z'    //true
'\172'==='z'   //true
'\x7A'==='z'   //true
'\u007A'==='z'   //true
'\u{7A}'==='z'   //true

传统上,Javascript只有indexof方法,可以用来确定一个字符串是否包含在另一个字符串种

ES6提供了三种新方法

includes(),startsWith(),endsWith()

-includes():返回布尔值,表示是否找到了参数字符串

-startsWith():返回布尔值,表示参数字符串是否在原字符串的头部

-endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部

let s = 'Hello world!;
s.startsWith('Hello');//true
s.endsWith('!');//true
s.includes('o');//true

s.startsWith('world',6);//true   第n个到结束
s.endsWith('Hello',5);//true   前n个字符
s.includes('Hello',6);//false    第n个到结束

 

repeat()

 

repeat方法返回一个新字符串,表示将原字符串重复n次

'x'.repeat(3)//"xxx"
'hello'.repeat(2);//"hellohello"
'na'.repeat(0);//""

padStart(),padEnd()

字符串补全长度

'x'.padStart(5,'ab')//'ababx'   n代表新字符串长度
'x'.padStart(4,'ab')//'abax'

'x'.padEnd(5,'ab')//'xabab'
'x'.padEnd(4,'ab')//'xaba'

 

模板字符串

传统输出

 
$('#result').append(
    'There are <b>' + basket.count +'</b> +
    'items in your basket, ' +
    '<em>' + basket.onSale +
    '</em> are on sale!'
}

ES6引入模板

//用反引号(`)标识

$('#result').append(`
    There are <b>${basket.count}</b> items
    in your basket,<em>${basket.onSale}</em>
    are on sale!
`);

标签模板------重要应用:过滤HTML字符串,防止用户输入可以内容

let message=SaferHTML`<p>${sender} has sent you a message.</p>`;

function SaferHTML(templateData){
    let s=templateData[0];
    for(let i=1;i<arguments.length;i++){
        let arg=String(arguments[i]);

        s += arg.replace(/&/g,"&")
                .replace(/</g,"<")
                .replace(/>/g,">");

        s += templateData[i];
    }
    return s;
}

上面代码中,sender变量往往是用户提供的,经过SaferHTML函数处理,里面的特殊字符都会被转义

let sender = '<script>alert("abc")</script>';//恶意代码
let message = SaferHTML`<p>${sender} has sent you a message.</p>`;

message  //<p><script>alert("abc")</script> has sent you a message.</p>

字符串的正则方法   match()、replace()、search()和split()

后行断言

“先行断言”指的是,x只有在y前面才匹配,必须写成/x(?=y)/。比如只匹配百分号之前的数字,要写成/\d+(?=%)/

“先行否定断言”指的是,x只有不在y前面才匹配,必须写成/x(?!y)/。比如,只匹配不在百分号之前的数字,/\d+(?!%)/

“后行断言”,x只有在y后面才匹配,必须写成/(?<=y)x/。比如只匹配美元符号之后的数字/(?<=\$)\d+/

“后行否定断言”,x只有不在y后面才能匹配,必须写成/(?<!y)x/。比如只匹配不在美元符号后面的数字,/(?<!\$)\d+/

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值