• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Dùng regex để kiểm tra string gần đúng

Các thủ thuật liên quan đến xử lý chuỗi và thời gian

Điều hành viên: tungcan5diop, QUANITGROBEST

MrB
Thành viên tích cực
Thành viên tích cực
Bài viết: 158
Ngày tham gia: T.Tư 26/03/2008 7:03 pm
Been thanked: 1 time

Dùng regex để kiểm tra string gần đúng

Gửi bàigửi bởi MrB » T.Tư 04/06/2008 1:33 pm

Thủ thuật: Kiểm tra string gần đúng
Tác giả: MrB
Mô tả: Dùng regex để kiểm tra string gần đúng



Mã: Chọn hết

  1. //using System.Text.RegularExpressions;
  2.  
  3. public bool CompareStringNotExact(string s1, string s2, int percent)
  4. {
  5.     Regex regex = new Regex(string.Format("[{0}]+", s1),
  6.         RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
  7.     MatchCollection mc = regex.Matches(s2);
  8.     int length = 0;
  9.  
  10.     foreach (Match m in mc)
  11.     {
  12.         length += m.Length;
  13.     }
  14.  
  15.     if (length >= percent * s1.Length / 100)
  16.     {
  17.         return true;
  18.     }
  19.  
  20.     return false;
  21. }


s1 và s2 là string cần so sánh, percent là phẩn trăm sai số
Sửa lần cuối bởi MrB vào ngày T.Năm 05/06/2008 1:13 pm với 2 lần sửa.



nqtuvn
Thành viên tích cực
Thành viên tích cực
Bài viết: 112
Ngày tham gia: T.Bảy 29/03/2008 8:13 am

Re: Dùng regex để kiểm tra string gần đúng

Gửi bàigửi bởi nqtuvn » T.Tư 04/06/2008 9:04 pm

cái thuật toán này với độ chính xác là 100% thì có 3 trừong hợp như sau
str1=Nguyễn Văn A
str2=Nguyễn
=>True

Str1=Nguyễn Văn A
Str2=Văn
=> False

str1=Nguyễn Văn A
str2=A
=>True

Tạo sao lại vây?bác có thể giải thích chỗ này cho em đc ko

tienlbhoc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 415
Ngày tham gia: T.Bảy 14/07/2007 10:06 pm
Đến từ: Hà Nội
Been thanked: 1 time

Re: Dùng regex để kiểm tra string gần đúng

Gửi bàigửi bởi tienlbhoc » T.Tư 04/06/2008 9:08 pm

Ý nghĩa cái regex kia thế nào vậy , không hiểu
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

Re: Dùng regex để kiểm tra string gần đúng

Gửi bàigửi bởi neverland87 » T.Tư 04/06/2008 9:28 pm

Đã dùng Regex thì chắc chắn là phải chính xác 100% chứ, có phải thuật toán tìm kiếm do coder nghĩ ra đâu mà mong chỉ là gần đúng. Có ai lại thích sự gần đúng hơn sự chính xác tuyệt đối ko? :-/
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

tienlbhoc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 415
Ngày tham gia: T.Bảy 14/07/2007 10:06 pm
Đến từ: Hà Nội
Been thanked: 1 time

Re: Dùng regex để kiểm tra string gần đúng

Gửi bàigửi bởi tienlbhoc » T.Tư 04/06/2008 10:00 pm

Định code ngắn hơn em chứ gì nữa :D , bác neverland vào đây thì biết
viewtopic.php?f=12&t=533
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

MrB
Thành viên tích cực
Thành viên tích cực
Bài viết: 158
Ngày tham gia: T.Tư 26/03/2008 7:03 pm
Been thanked: 1 time

Re: Dùng regex để kiểm tra string gần đúng

Gửi bàigửi bởi MrB » T.Năm 05/06/2008 1:12 pm

Mình đã sửa lại và cho kết quả chính xác hơn.

tienlbhoc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 415
Ngày tham gia: T.Bảy 14/07/2007 10:06 pm
Đến từ: Hà Nội
Been thanked: 1 time

Re: Dùng regex để kiểm tra string gần đúng

Gửi bàigửi bởi tienlbhoc » T.Năm 05/06/2008 1:34 pm

Đây là list từ của tớ, mỗi dòng 1 từ, chạy vòng lặp 105842 lần để đọc và so sánh là được, làm cái soft lên đây để anh em dễ test nhé , post vài kết quả lên luôn đi. Còn muốn test cái của tớ thì xài từ điển spdict phần tìm kiếm nâng cao (xem chữ ký)
Tập tin đính kèm
AnhViet.7z
(313.46 KiB) Đã tải 622 lần
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

Hình đại diện của người dùng
minhduc4477
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 94
Ngày tham gia: T.Sáu 11/12/2009 2:15 pm
Been thanked: 1 time

Re: Dùng regex để kiểm tra string gần đúng

Gửi bàigửi bởi minhduc4477 » T.Năm 03/06/2010 3:47 pm

neverland87 đã viết:Đã dùng Regex thì chắc chắn là phải chính xác 100% chứ, có phải thuật toán tìm kiếm do coder nghĩ ra đâu mà mong chỉ là gần đúng. Có ai lại thích sự gần đúng hơn sự chính xác tuyệt đối ko? :-/


Tùy trường hợp bạn ạ!!! Nếu chính sát thì hiển thị cái chính sát. Nếu không có thì hiện cái gần đúng. (đúng nhất có thể)

Ví dụ như.

minhduc4477 đã viết:Với Fire Fox 3.6, thì bạn nhập:
caulacbov
caulabovb
caulcabov
culacbov
->enter->http://caulacbovb.com


Chẵng lẽ thấy không chính sát là chịu sao?
Tình yêu là vĩnh cữu, chỉ có người tình là thay đỗi.


Quay về “[.NET] Chuỗi và Thời gian”

Đang trực tuyến

Đang xem chuyên mục này: Yahoo [Bot]3 khách