裁剪字符串trim()自定義改進(jìn)版
ECMAScript5已經(jīng)為字符串定義了原生的trim方法。這個方法可能比會比本文的任何版本的都要快。建議在支持的瀏覽器中使用原生函數(shù)。下面講述的是自定義trim()函數(shù)遇到的問題,改進(jìn)的過程。功夫在不斷淬煉中才能醇正。
JavaScript中沒有用于移除字符串頭尾空白的原生修剪方法。最常見的自定義trim()函數(shù)實現(xiàn)如下所示:
function trim(text) {
return text.replace(/^\s+|\s+$/g, ‘');
}
這種實現(xiàn)使用一個正則表達(dá)式匹配字符串開頭和結(jié)尾的一或多個空白字符。replace()方法用空字符串替換所有匹配的部分。
然而這個實現(xiàn)方式有個基于正則表達(dá)式的性能問題,這種影響來自兩個方面:一方面是指明有兩個匹配模式的管道運算符,另一方面是指明全局應(yīng)用該模式的g標(biāo)記。
考慮到這些,可以將正則表達(dá)式一分為二并去掉g標(biāo)記來重寫該函數(shù),稍稍提高它的速度。
function trim(text) {
return text.replace(/^\s+/, ‘').replace(/\s+$/, ‘');
}
另一個改進(jìn)的版本。保證正則表達(dá)式盡可能地簡單。
function trim(text) {
//刪除字符串的頭部空白
text = text.replace(/^\s+/, ‘');
// 循環(huán)清除尾部空白
for(var i=text.length; i--; ) {
if(/\S/.test(text.charAt(i))) { // \S 非空白字符
text = text.substring(0, i+1);
break;
}
}
return text;
}
使用建議:第2個trim()函數(shù)在小規(guī)模處理短字符串時性能還是好的。而第3個trim函數(shù)在處理長字符串時明顯更快。
題外話:簡單的裁剪字符串首尾空白字符函數(shù),引發(fā)了對正則表達(dá)式的性能問題的考慮并實現(xiàn)規(guī)避性能問題的方法。技術(shù)追求完美,只能在實踐中前行。
相關(guān)文章
javaScript獲取對象中非空的屬性實現(xiàn)方法詳解
這篇文章主要為大家介紹了javaScript獲取對象中非空的屬性實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07javascript的日期對象、數(shù)組對象、二維數(shù)組使用說明
這篇文章主要介紹了javascript的日期對象、數(shù)組對象、二維數(shù)組使用說明,需要的朋友可以參考下2014-12-12JavaScript入門教程(5) js Screen屏幕對象
這是基本JavaScript的屏幕對象2009-01-01