private static readonly string[] VietNamChar = new string[]
{
"aAeEoOuUiIdDyY",
"áàạảãâấầậẩẫăắằặẳẵ",
"ÁÀẠẢÃÂẤẦẬẨẪĂẮẰẶẲẴ",
"éèẹẻẽêếềệểễ",
"ÉÈẸẺẼÊẾỀỆỂỄ",
"óòọỏõôốồộổỗơớờợởỡ",
"ÓÒỌỎÕÔỐỒỘỔỖƠỚỜỢỞỠ",
"úùụủũưứừựửữ",
"ÚÙỤỦŨƯỨỪỰỬỮ",
"íìịỉĩ",
"ÍÌỊỈĨ",
"đ",
"Đ",
"ýỳỵỷỹ",
"ÝỲỴỶỸ"
};
public static string LocDau(string str)
{
//Thay thế và lọc dấu từng char
for (int i = 1; i < VietNamChar.Length; i++)
{
for (int j = 0; j < VietNamChar[i].Length; j++)
str = str.Replace(VietNamChar[i][j], VietNamChar[0][i - 1]);
}
return str;
}
Ví dụ string locdau = LocDau("hmclip.net Video clip tổng hợp") Sẽ cho kết quả là: hmclip.net Video clip tong hopfunction locdau(obj)
{
var str;
if (eval(obj))
str = eval(obj).value;
else
str = obj;
str = str.toLowerCase();
str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a");
str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e");
str = str.replace(/ì|í|ị|ỉ|ĩ/g, "i");
str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o");
str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u");
str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y");
str = str.replace(/đ/g, "d");
//str= str.replace(/!|@|%|\^|\*|\(|\)|\+|\=|\<|\>|\?|\/|,|\.|\:|\;|\'| |\"|\&|\#|\[|\]|~|$|_/g,"-");
/* tìm và thay thế các kí tự đặc biệt trong chuỗi sang kí tự - */
//str= str.replace(/-+-/g,"-"); //thay thế 2- thành 1-
str = str.replace(/^\-+|\-+$/g, "");
//cắt bỏ ký tự - ở đầu và cuối chuỗi
eval(obj).value = str.toUpperCase();
}
Sử dụng hàm này: <asp:TextBox ID="txtTenDangNhap" onkeyup="locdau(this);" runat="server" /> Khi đó txtTenDangNhap sẽ chỉ nhập được không dấu.CREATE FUNCTION [dbo].[fLocDauTiengViet]
(
@strInput NVARCHAR(4000)
)
RETURNS NVARCHAR(4000)
AS
Begin
Set @strInput=rtrim(ltrim(lower(@strInput)))
IF @strInput IS NULL RETURN @strInput
IF @strInput = '' RETURN @strInput
Declare @text nvarchar(50), @i int
Set @text='-''`~!@#$%^&*()?><:|}{,./\"''='';–'
Select @i= PATINDEX('%['+@text+']%',@strInput )
while @i > 0
begin
set @strInput = replace(@strInput, substring(@strInput, @i, 1), '')
set @i = patindex('%['+@text+']%', @strInput)
End
Set @strInput =replace(@strInput,' ',' ')
DECLARE @RT NVARCHAR(4000)
DECLARE @SIGN_CHARS NCHAR(136)
DECLARE @UNSIGN_CHARS NCHAR (136)
SET @SIGN_CHARS = N'ăâđêôơưàảãạáằẳẵặắầẩẫậấèẻẽẹéềểễệế
ìỉĩịíòỏõọóồổỗộốờởỡợớùủũụúừửữựứỳỷỹỵý'
+NCHAR(272)+ NCHAR(208)
SET @UNSIGN_CHARS = N'aadeoouaaaaaaaaaaaaaaaeeeeeeeeee
iiiiiooooooooooooooouuuuuuuuuuyyyyy'
DECLARE @COUNTER int
DECLARE @COUNTER1 int
SET @COUNTER = 1
WHILE (@COUNTER <=LEN(@strInput))
BEGIN
SET @COUNTER1 = 1
WHILE (@COUNTER1 <=LEN(@SIGN_CHARS)+1)
BEGIN
IF UNICODE(SUBSTRING(@SIGN_CHARS, @COUNTER1,1))
= UNICODE(SUBSTRING(@strInput,@COUNTER ,1) )
BEGIN
IF @COUNTER=1
SET @strInput = SUBSTRING(@UNSIGN_CHARS, @COUNTER1,1)
+ SUBSTRING(@strInput, @COUNTER+1,LEN(@strInput)-1)
ELSE
SET @strInput = SUBSTRING(@strInput, 1, @COUNTER-1)
+SUBSTRING(@UNSIGN_CHARS, @COUNTER1,1)
+ SUBSTRING(@strInput, @COUNTER+1,LEN(@strInput)- @COUNTER)
BREAK
END
SET @COUNTER1 = @COUNTER1 +1
END
SET @COUNTER = @COUNTER +1
End
SET @strInput = replace(@strInput,' ','-')
RETURN lower(@strInput)
End
Ví dụ: SELECT dbo.fLocDauTiengViet(N'hmclip - Lọc dấu tiếng Việt
trong Csharp, javascript và SQL Server') sẽ cho kết quả:
hmclip-loc-dau-tieng-viet-trong-csharp-javascript-va-sql-server
© Chia sẻ 2013 . Powered by Blogger . Blogger templates . New Blogger Templates