Đăng ký vps giá rẻ, tên miềndomain. Việc kiểm tra và mua tên miền giá rẻ, domain giá rẻ, hosting giá rẻ, máy chủ ảo giá rẻserver giá rẻ chỉ với 2 bước đơn giản. Giúp bạn tiên phong trong kinh doanh Online

C#
 9ecva.com - 9e Chu Van An Forever : C#
Tiêu đề Chủ đề: Lọc dấu tiếng việt trong C# hoặc trong javascript Trả lời bài viếtGửi bài viết mới
Tác giả
Nội dung << Chủ đề trước | Chủ đề kế tiếp >>
DUCVINH83
Administrator
Administrator
Avatar
Không ngừng học hỏi !

Ngày gia nhập: 01/11/2005
Giới tính:
Đến từ: Vietnam
Trạng thái:
Bài viết: 365
Tiền: 738$
Địa chỉ e-mail: Gửi mail
Yahoo! IM: Yahoo! IM
Sinh nhật: 17/02/1983
Cảnh cáo: (0%)
Minus 1 warningCurrent warnlevel: 0%Add 1 warning
Ngày gửi: 05/08/2010 lúc 10:05 sáng | Đã khóa IP Trích dẫn DUCVINH83

Trong khi lập trình có khi bạn cần lọc dấu chuỗi tiếng việt (Unicode) thành chuỗi không dấu. Ví dụ trong Form đăng nhập hoặc đăng ký thành viên bạn không muốn TenDangNhap có dấu. Mình sẽ giới thiệu các hàm lọc dấu trong C#, javascript

1. Hàm lọc dấu tiếng việt trong C#.
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 k = 1; k< VietNamChar.Length; k++)       
        {
             for (int j = 0; j < VietNamChar.Length; j++)
                 str = str.Replace(VietNamChar[k][j], VietNamChar[0][k - 1]);       
        }       
        return str;   
    }


Ví dụ string locdau = LocDau("Chia sẻ là niềm vui") Sẽ cho kết quả là: Chia se la niem vui

 

2. Hàm lọc dấu trong Javascript
function 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.

 3. Hàm lọc dấu trong SQL
Bài này mình viết hàm chuyển một chuỗi ký tự có dấu (Unicode), chuyển thành chuỗi không dấu

Ứng dụng của hàm này bạn có thể tạo thêm một trường trong table của TB_BaiViet, để khi cần tạo liên kết  dạng http://hmweb.com.vn/vi-VN/cntt/Cac-ham-so-thong-dung-trong-E xcel.aspx

 --CREATE BY webmaster@hmweb.com.vn

CREATE FUNCTION [dbo].[fuChuyenCoDauThanhKhongDau]

(

      @strInput NVARCHAR(4000)

)

RETURNS NVARCHAR(4000)

AS

BEGIN    

    IF @strInput IS NULL RETURN @strInput

    IF @strInput = '' RETURN @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

                   AADEOOUAAAAAAAAAAAAAAAEEEEEEEEEEIIIII

                   OOOOOOOOOOOOOOOUUUUUUUUUUYYYYYDD'

 

    DECLARE @COUNTER int

    DECLARE @COUNTER1 int

    SET @COUNTER = 1

 

    WHILE (@COUNTER <=LEN(@strInput))

    BEGIN  

      SET @COUNTER1 = 1

      --Tìm trong chuỗi mẫu

       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

      --Tìm tiếp

       SET @COUNTER = @COUNTER +1

    END

    SET @strInput = replace(@strInput,' ','-')

    RETURN @strInput

END

Ví dụ: SELECT dbo.fuChuyenCoDauThanhKhongDau (N'hmweb-Các hàm số thông dụng trong Excel') --Sẽ trả về kết quả là "hmweb-Cac-ham-so-thong-dung-trong-Excel"

Xem bài hướng dẫn:Chúc bạn thành công



Được sửa bởi DUCVINH83 trên diễn đàn 05/08/2010 lúc 11:44 sáng


__________________

YM: DUCVINH83
0912 822334


Lên trên Xem DUCVINH83's Thông tin cá nhân Tìm những bài viết khác của DUCVINH83 Ghé thăm DUCVINH83's Trang chủ
 

Nếu bạn muốn trả lời thì trước tiên bạn phải đăng nhập
Nếu chưa đăng ký thì bạn hãy đăng ký

  Trả lời bài viếtGửi bài viết mới
Xem trang in Xem trang in

Di chuyển nhanh
Bạn không thể tạo đề tài mới
Bạn không thể trả lời bài viết
Bạn không thể xoá bài viết bạn đã gưi
Bạn không thể sửa bài viết bạn đã gửi
Bạn không thể tạo bình chọn
Bạn không thể bình chọn



Trang này được tạo ra trong 0.2148 giây.
cheap jordans for salecheap jordans for salecheap jordans for salecheap jordans for salecheap jordans for salecheap jordans for salecheap jordans for salecheap jordans for salecheap jordans for salesac longchamp pas chergucci outlet

baomang.net  9ecva.com © 2007 - Phát triển bởi Trịnh Đức Vinh