• 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

Moderators: tungcan5diop, QUANITGROBEST

MrB
Thành viên tích cực
Thành viên tích cực
Posts: 158
Joined: Wed 26/03/2008 7:03 pm
Been thanked: 1 time

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

Postby MrB » Wed 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



Code: Select all

  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ố
Last edited by MrB on Thu 05/06/2008 1:13 pm, edited 2 times in total.



nqtuvn
Thành viên tích cực
Thành viên tích cực
Posts: 112
Joined: Sat 29/03/2008 8:13 am

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

Postby nqtuvn » Wed 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
Posts: 415
Joined: Sat 14/07/2007 10:06 pm
Location: Hà Nội
Been thanked: 1 time

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

Postby tienlbhoc » Wed 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
Posts: 490
Joined: Sat 26/05/2007 4:31 pm
Been thanked: 8 times

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

Postby neverland87 » Wed 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
Posts: 415
Joined: Sat 14/07/2007 10:06 pm
Location: Hà Nội
Been thanked: 1 time

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

Postby tienlbhoc » Wed 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
Posts: 158
Joined: Wed 26/03/2008 7:03 pm
Been thanked: 1 time

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

Postby MrB » Thu 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
Posts: 415
Joined: Sat 14/07/2007 10:06 pm
Location: Hà Nội
Been thanked: 1 time

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

Postby tienlbhoc » Thu 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ý)
Attachments
AnhViet.7z
(313.46 KiB) Downloaded 704 times
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

User avatar
minhduc4477
Thành viên năng nổ
Thành viên năng nổ
Posts: 94
Joined: Fri 11/12/2009 2:15 pm
Been thanked: 1 time

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

Postby minhduc4477 » Thu 03/06/2010 3:47 pm

neverland87 wrote:Đã 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 wrote: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.


Return to “[.NET] Chuỗi và Thời gian”

Who is online

Users browsing this forum: No registered users and 0 guests