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+/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章