javascript之更有效率的字串替換_javascript技巧

來源:互聯網
上載者:User
首先看看原來是怎麼樣做的:
複製代碼 代碼如下:

function toTXT(str){ 
    str = str.replace(/\&/g, "& amp;"); 
    str = str.replace(/\>/g, "& gt;"); 
    str = str.replace(/\</g, "& lt;"); 
    str = str.replace(/\"/g, "& quot;"); 
    str = str.replace(/\'/g, "& #39;"); 
    return str; 

[/code
分析:上面的方法是用來替換過濾字串的HTML代碼的,一直認為這樣做很沒效率,因為要把這個字串進行5次全文匹配(不是資料庫中的全文檢索索引),有沒方法只使用一次全文匹配,就可以替換掉不同的字串為不同的結果呢?

呵呵,終於找到了下面的這個方法:

[code]
function toTXT(str){ 
    var RexStr = /\<|\>|\"|\'|\&/g 
    str = str.replace(RexStr, 
        function(MatchStr){ 
            switch(MatchStr){ 
                case "<": 
                    return "& lt;"; 
                    break; 
                case ">": 
                    return "& gt;"; 
                    break; 
                case "\"": 
                    return "& quot;"; 
                    break; 
                case "'": 
                    return "& #39;"; 
                    break; 
                case "&": 
                    return "& amp;"; 
                    break; 
                default : 
                    break; 
            } 
        } 
    ) 
    return str; 




看上去要比第一個方法要複雜一些,寫的代碼也要多一點點,不過呢,只用一次,就可以替換整個字串裡面的匹配字元為不同的結果,非常有效率的。而且代碼看上去也很直觀,修改方便。

更重要的是第一個方法假如要替換"&"一定要放在最前面,而後面的方面完全不用擔心這個問題。

JavaScript還有很多鮮為人知的用法,而且很多思想在別的語言裡面都沒有。就算JAVA再怎麼強大,他的Regex卻在JDK1.4裡面才引入,落後了很多。不過我沒說JAVA就一定比JS差只類的話啊。

JS的應用範圍絕對不止HTML,還有很多其他的方面都在使用他,比如WebFT(測試網站的工具),.NET等,並且在即將發布,傳說中“FLASH殺手”——WPF/E(Windows Presentation Foundation/Everywhere)出現後,JS的應用範圍更加寬廣。

很多人都不屑於JS,認為他很低級,連基本的物件類型都沒有。NO,錯了,在.NET裡面,也就是Jscript.Net中,微軟將JS的版本提升為8.0,基本上他已經與C#沒有任何差別,所有程式語言該有的他都具備了。

說一個笑話,我寫.net和ASP就用的Jscript,但是VB和C#我也並不是屬於那種泛泛而談的類型,只是我覺得假如可以用一門語言從後寫到前,包括他的周邊項目,那將是一件非常愜意的事情。從此再也不會在多種語言中轉來轉去了。
來看看WPF/E(Windows Presentation Foundation/Everywhere)的威力:
2005年的PDC大會上,微軟介紹了一項名為WPF/E(Windows Presentation Foundation/Everywhere)的技術,在自己的MIX'06會議上又展示了新的特色。WPF/E依賴XAML和JavaScript來製作網頁,它也帶有跨平台工具,支援CLR、.NET、C#、VB.NET等的代碼,實質上,它是一個與目前屬於Adobe的Flash很類似的工具。

微軟的程式員Mike Harsh曾經說過:“沒錯,我們正將C#帶入Mac.”

雖然被大家認為是“Flash殺手”,不過微軟的目標更遠大一點:讓使用者不僅在案頭系統上使用微軟的軟體和技術,他們同樣要佔領網路和行動裝置。

“實質上,WPF/E根本不是一個照搬的作品,它為開發人員、設計師、技術員提供了一個綜合性的開發設計平台。”開發人員Joe Stegman說,“它能良好地與微軟的其他產品結合,這一點是Flash平台望塵莫及的。”Stegman表示他們一直在很努力地進行WPF/E開發工作,已經發行了好幾個組建,使用者體驗版在不久之後也會放出。

雖然現在Flash風光無限,有人可能認為微軟的WPF/E沒法超越Flash,不過想想多年以前網景的Netscape……

圖為在瀏覽器中示範的向量圖形,可以隨意對圖形進行縮放、旋轉

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.