處理JavaScript字串特殊字元? 閃開,讓專業的來!
0 |
之前為處理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
Comments
Be the first to post a comment