javascript 去字符串空格終極版(支持utf8)
更新時間:2009年11月14日 23:55:03 作者:
其實空格有兩個,一個ASCII編號是32,另一個是ASCII編號是160.后者是unicode編碼。以前寫一個貼子ie6下準確判斷空格還以是IE6不能正確判斷空格。
其實這個問題是:如果你的js本身是unicode編碼,那么用正則表達式\s就可以去掉所有空白,但是如果你js是utf-8編碼,那么正則就不能處理編碼為160的空格了。
下面我先是正則表達式去掉編碼為32的空格,再用遞歸的方法去掉字符串兩邊的unicode空格。
/** 去字符兩端空格 開始
*@author 敖士偉
*@version v1.0
*@date 2009/11/14 22:51
*/
String.prototype.trim = function() {
var r = this.replace(/(^\s*)|(\s*$)/g, "");
r = Lremoveblank(r);
r = Rremoveblank(r);
return r;
}
function Lremoveblank(s) {
if (s.length == 1 && s.charCodeAt(0) == 160)
return "";
if (s.charCodeAt(0) == 160) {
s = s.substr(1, s.length - 1);
return removeblank(s);
}
else {
return s;
}
}
function Rremoveblank(s) {
if (s.length == 1 && s.charCodeAt(0) == 160)
return "";
if (s.charCodeAt(s.length-1) == 160) {
s = s.substr(0, s.length - 1);
return Rremoveblank(s);
}
else {
return s;
}
}
//--去字符兩端空格 結束
//e.g.
var a = " a ";
alert("b" + a.trim() + "b");
下面我先是正則表達式去掉編碼為32的空格,再用遞歸的方法去掉字符串兩邊的unicode空格。
復制代碼 代碼如下:
/** 去字符兩端空格 開始
*@author 敖士偉
*@version v1.0
*@date 2009/11/14 22:51
*/
String.prototype.trim = function() {
var r = this.replace(/(^\s*)|(\s*$)/g, "");
r = Lremoveblank(r);
r = Rremoveblank(r);
return r;
}
function Lremoveblank(s) {
if (s.length == 1 && s.charCodeAt(0) == 160)
return "";
if (s.charCodeAt(0) == 160) {
s = s.substr(1, s.length - 1);
return removeblank(s);
}
else {
return s;
}
}
function Rremoveblank(s) {
if (s.length == 1 && s.charCodeAt(0) == 160)
return "";
if (s.charCodeAt(s.length-1) == 160) {
s = s.substr(0, s.length - 1);
return Rremoveblank(s);
}
else {
return s;
}
}
//--去字符兩端空格 結束
//e.g.
var a = " a ";
alert("b" + a.trim() + "b");
您可能感興趣的文章:
相關文章
簡單談談offsetleft、offsetTop和offsetParent
這篇文章主要給大家介紹了offsetleft、offsetTop和offsetParent的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12