處理JavaScript字串特殊字元? 閃開,讓專業的來!

之前為處理JavaScript字串的特殊字元寫過函數,今天發現.NET 4.0新增了HttpUtility.JavaScriptStringEncode,代表以後不用再自己土法鍊鋼DIY了,乖乖閃開,讓專業的來! (再一次,老鳥的身價持續走貶...)

順手測過效能:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Web;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "I'm PC!\n\"I\tam\tPC!\"\n";
            Stopwatch sw = new Stopwatch();
            sw.Start();
            for (int i = 0; i < 3000000; i++)
            {
                string t = EscapeStringForJS(s);
            }
            sw.Stop();
            Console.WriteLine("EscapeStringForJS : {0}", EscapeStringForJS(s));
            Console.WriteLine("Duration {0}ms", sw.ElapsedMilliseconds);
 
            sw.Reset();
            sw.Start();
            for (int i = 0; i < 3000000; i++)
            {
                string u = HttpUtility.JavaScriptStringEncode(s);
            }
            sw.Stop();
            Console.WriteLine("JavaScriptStringEncode : {0}", 
                               HttpUtility.JavaScriptStringEncode(s));
            Console.WriteLine("Duration {0}ms", sw.ElapsedMilliseconds);
 
            Console.Read();
        }
 
        public static string EscapeStringForJS(string s)
        {
            //REF: http://www.javascriptkit.com/jsref/escapesequence.shtml
            return s.Replace(@"\", @"\\")
                    .Replace("\b", @"\b")
                    .Replace("\f", @"\f")
                    .Replace("\n", @"\n")
                    .Replace("\0", @"\0")
                    .Replace("\r", @"\r")
                    .Replace("\t", @"\t")
                    .Replace("\v", @"\v")
                    .Replace("'", @"\'")
                    .Replace(@"""", @"\""");
        }
 
    }
}

原廠出品,又比土砲函數更快,請安心使用~

EscapeStringForJS : I\'m PC!\n\"I\tam\tPC!\"\n
Duration 4427ms
JavaScriptStringEncode : I\u0027m PC!\n\"I\tam\tPC!\"\n
Duration 2275ms

歡迎推文分享:
Published 04 September 2012 02:54 PM 由 Jeffrey
Filed under: ,
Views: 14,308



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<September 2012>
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication