2010年3月16日 星期二

判斷字串是否含造字

想要一個在TSQL直接可以用來判斷欄位中是否含有造字(本倫是採用司法院造字程式) 的字在里頭的功能

爬了一下文,沒找到有人寫好的, 不過倒是有很多教你如何判別是否為中文的方法

參考了一下這篇討論, 想自已寫一個CLR看看

先在CONSOLE試看看,

public static void test2(string content)
{
Encoding Encoding950 = Encoding.GetEncoding(950);
byte[] bytes = Encoding950.GetBytes(content);
byte[] bytes1 = new byte[1];
byte[] bytes2 = new byte[2];
byte hibyte;
byte lowbyte;


for (int i = 0; i < bytes.Length; i++)
{
hibyte = bytes[i];


if (hibyte <  128) //英文或unicode


{


bytes1[0] = hibyte;

Console.WriteLine("ascii" + hibyte.ToString());


Console.WriteLine(Encoding950.GetString(bytes1));


}


else


{


i++;


lowbyte = bytes[i];


bytes2[0] = hibyte;


bytes2[1] = lowbyte;


//Console.WriteLine("high: " + hibyte.ToString());


//Console.WriteLine("low : " + lowbyte.ToString());


//Console.WriteLine("high: " + Convert.ToString(hibyte, 16));


//Console.WriteLine("low : " + Convert.ToString(lowbyte, 16));


Console.WriteLine(Encoding950.GetString(bytes2));


string hex = Convert.ToString(hibyte, 16) + Convert.ToString(lowbyte, 16);


Console.WriteLine("hex: " + hex);


Console.WriteLine(hex.CompareTo("A140").ToString()); //-1為範圍外


Console.WriteLine("FEFE".CompareTo(hex).ToString()); //1為範圍外
}
}


Console.ReadLine();
}

不太確定這樣判斷high byte和low byte對不對

但試了幾個造字看來判斷都正確地...
最後延續之前寫的DLL ( sql server clr user defined functions), 再加一個function 部署到DB就大功告成了..

沒有留言:

張貼留言

自動記錄滑鼠點選操作

為了一個需求,需要人工去點選幾個滑鼠的點選行為,找了幾種工具,覺得GS Auto Clicker最實用,極符合我的需求,尤其是多個固定位置的button點擊,解決了一個很耗時間的工作。 最後設定完預設hotkey F8為啟用鍵,就可以開始自動做工了。再按F8結束工作。 GS Au...