DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> 裁剪字符串trim()自定義改進版
裁剪字符串trim()自定義改進版
編輯:JavaScript基礎知識     

ECMAScript5已經為字符串定義了原生的trim方法。這個方法可能比會比本文的任何版本的都要快。建議在支持的浏覽器中使用原生函數。下面講述的是自定義trim()函數遇到的問題,改進的過程。功夫在不斷淬煉中才能醇正。

JavaScript中沒有用於移除字符串頭尾空白的原生修剪方法。最常見的自定義trim()函數實現如下所示:

復制代碼 代碼如下:
function trim(text) {

return text.replace(/^\s+|\s+$/g, ‘');

}

這種實現使用一個正則表達式匹配字符串開頭和結尾的一或多個空白字符。replace()方法用空字符串替換所有匹配的部分。

然而這個實現方式有個基於正則表達式的性能問題,這種影響來自兩個方面:一方面是指明有兩個匹配模式的管道運算符,另一方面是指明全局應用該模式的g標記。

考慮到這些,可以將正則表達式一分為二並去掉g標記來重寫該函數,稍稍提高它的速度。

復制代碼 代碼如下:
function trim(text) {

return text.replace(/^\s+/, ‘').replace(/\s+$/, ‘');

}

另一個改進的版本。保證正則表達式盡可能地簡單。

復制代碼 代碼如下:
function trim(text) {

//刪除字符串的頭部空白

text = text.replace(/^\s+/, ‘');

// 循環清除尾部空白

for(var i=text.length; i--; ) {

if(/\S/.test(text.charAt(i))) { // \S 非空白字符

text = text.substring(0, i+1);

break;

}

}

return text;

}

使用建議:第2個trim()函數在小規模處理短字符串時性能還是好的。而第3個trim函數在處理長字符串時明顯更快。

題外話:簡單的裁剪字符串首尾空白字符函數,引發了對正則表達式的性能問題的考慮並實現規避性能問題的方法。技術追求完美,只能在實踐中前行。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved