About Me

我的相片
台北市, Taiwan
我是方選,
方白科技(finebind tech.)共同創辦人,
臺大資管所畢,
希望能幫助更多的人!

FB: http://fb.com/function1122
LINE: http://bit.ly/1foeZft (手機開啟點擊網址自動加入)

最新15則讀者回應

最新文章

FUNction's 上課筆記

Label Cloud

Blog Archive

FeedBurner

追蹤者

JavaScript Replace() Hacking!!

FUNction 於 2008年2月12日 晚上8:12 發表
什麼這篇要用到hacking (奧義)這個詞,那是因為javascript 的replace 實在太神奇了。在很多語言中都有replace()這個方法,可是javascript 的replace 卻可以搭配正規表達式(regexp)對字串做出很多變化。

要點一(難度: 50)
在javascript 中,replace 不像很多程式語言能一次取代多次(預設只會取代一次),需要透過正規表達試才能提供取代掉某篇文章中某個字的效果,假設字串happy我們想轉變為haPPy,有兩種寫法:

  • str.replace(/p/g,"P");
  • str.replace(new RegExp("p", "g"), "P")

這裡使用正規表達是特殊命令"g",代表「所有」。

要點二(難度: 70)
假設你透過搜尋引擎造某個網頁,可是那個網頁很大張,你找不到你要的內容,那你會怎樣?

我都會利用Google 的頁庫存檔,再次檢視那張網頁,因為「頁庫存檔」通常都會好心的將你的關鍵字用別的顏色標注。

其實透過replace 也可以將特殊字改變顏色,我現在來簡單實做這樣一個貼心功能,我把它寫城一個網頁:
[範例網頁]←你可以點選檢視原始碼來看看我js怎麼寫,這範例我邊google 邊寫,寫了一小時...所以我覺得難度有90。

要點三(難度: 80)
除了將正規表達是發揮的淋漓盡致外,我們還可以自定函數,處理字串內容。以下是我在大陸網站找到的一個例子,這邊將他稍微修改一下,程式碼如下:

<script language="javascript">
var str="我今年22歲,我弟今年19歲,我奶奶今年82歲(不過她在天上)"
function yearsOld($1)
{
var gyear=(new Date()).getYear()-parseInt($1)+1;
return $1+"("+gyear+"年出生)";
}
var reg=new RegExp("(d+)歲","g");
var newstr=str.replace(reg, yearsOld);

document.write(str);
// 輸出 "我今年22歲,我弟今年19歲,
// 我奶奶今年82歲(不過她在天上)"
document.write(newstr);
// 輸出 "我今年22歲(1986年出生),我弟今年19歲(1989年出生),
// 我奶奶今年82歲(1926年出生)(不過她在天上)"
</script>

超酷的吧,不過其實我是1985年生的 :-)
參考資料:http://tech.ddvip.com/2007-10/119331548136528_4.html

Tags: ,

讀者回應 ( 2 意見 )

很棒的文章喔~~~
詳細的解釋了javascript 的replace

To 匿名者:
感謝你的支持,讓我有動力繼續寫技術文章!!
我這兩天預計發表正規表達式的相關程是設計,希望對大家有幫助^^

張貼留言

如果沒有帳戶,建議使用「名稱/網址」留言喔^^