2012年2月23日 星期四

javascript 上的 reverse()


字串的反轉,在 SQL、C# 使用 Reverse 就可以輕鬆完成。但同樣的需求發生在 javascript 上,卻有點不一樣。在 javascript 裡,並非不支援 Reverse,而是 Reverse 的對象不是字串,而是陣列。所以在使用上,就不能直接呼叫使用,必須稍微做些調整。

看了網路上所介紹到方法,大約可分成兩類:

第一種:透過迴圈方式,將字串由後往前抓一遍
String.prototype.reverse = function() {
    var s = "";
    var i = this.length;
    while (i>0) {
        s += this.substring(i-1,i);
        i--;
    }
    return s;
}

var s="paladin";
alert(s.reverse());
 

第二種:把字串轉成陣列,並將陣列反轉後再組成字串
String.prototype.reverse=function(){return this.split("").reverse().join("");}

var s="paladin";
alert(s.reverse());

個人還蠻喜歡第二種寫法,太簡潔了。日後只需要用:


alert("paladin".split('').reverse().join(''));

就可以把名字倒過來寫了。

此外,還有一個很少使用到的 html 標籤 <bdo>,它可以不透過 javascript 就直接將字串反轉,甚至 <bdo> 標籤裡頭所包含的物件呈現順序也是可以自行設定為由右至左或由左至右,只需去設定 dir 屬性即可(rtl:由右至左,ltr:由左至右)。
<div><bdo dir="rtl">paladin <img alt="1" /> <img alt="2" /></bdo></div>
參考:
01:Reverse-a-txet
02:How do you reverse a string in place in JavaScript?
03:HTML <bdo> Tag

沒有留言:

張貼留言