2013-07-11 18 views
9

Tôi nhận được số điện thoại từ thiết bị di động, định dạng khác với định dạng quốc tế hay không.So sánh 'số điện thoại di động' - và/hoặc định dạng quốc tế

Kịch bản (ZA định dạng chỉ dành riêng cho ví dụ):

số đăng ký tại cơ sở dữ liệu luôn định dạng quốc tế: +27827177982

số tôi nhận được có thể khác nhau ví dụ +27827177982 = 27827177982 = 0827177982 - tiền tố quốc tế cho số là +27

Làm cách nào để khớp với định dạng quốc tế mặc dù tôi không nhận được định dạng quốc tế ???


Lưu ý:

tôi không thể làm chuyển đổi chỉ trong 1 khu vực.

Có cách đơn giản nào để so sánh số điện thoại di động cho tất cả các vùng không?

Tiền tố dao động trong số lượng ký tự tham khảo: http://en.wikipedia.org/wiki/List_of_country_calling_codes


ý tưởng của tôi:

  • So sánh 9 ký tự cuối cùng của số lượng, điều này sẽ trừ tiền tố khu vực .. nhưng mỗi vùng chỉ có '9 ký tự không bao gồm tiền tố'?

  • Lặp qua cơ sở dữ liệu so sánh các số điện thoại một vài lần, ví dụ: kiểm tra xem có 9 con số cuối cùng - nếu không phù hợp - kiểm tra cuối cùng 10 vv (Nhưng có thể gây ra các trận đấu không mong muốn)


Bất kỳ trợ giúp sẽ được đánh giá rất

+0

Biết quốc gia xuất xứ của ít nhất MỘT số điện thoại (giả sử bạn luôn so sánh hai), rất hữu ích ở đây ... Sau đó, bạn có thể xây dựng một thuật toán vững chắc ... Tôi đã làm điều này một vài lần, cho tôi biết nếu bạn vẫn muốn được hỗ trợ :) – Grantly

Trả lời

8

Bạn có thể muốn tìm kiếm vào việc sử dụng thư viện cho việc này. Ví dụ: thư viện libphonenumber của Google với C# port being here. Đặc biệt, hai phương pháp này có thể được giá trị xem xét (tôi nhấn mạnh)

isNumberMatch - được một mức độ tin cậy vào việc hai con số có thể được như vậy.

getExampleNumber/getExampleNumberByType - cung cấp số dụ hợp lệ cho tất cả các nước/vùng lãnh thổ, với các tùy chọn của đó nêu rõ loại số ví dụ điện thoại là cần thiết.

+0

Trông rất hứa hẹn! Cảm ơn! Tôi sẽ cung cấp cho nó một shot và cho bạn biết. –

+0

Vui vì tôi có thể giúp :) – keyboardP

0

Trong hầu hết các nước (Mỹ trở thành một ngoại lệ đáng chú ý), số phi quốc tế bắt đầu với một 0, vì vậy giải pháp sẽ là một cái gì đó như:

  • Nếu đất nước nằm trong danh sách các trường hợp ngoại lệ , đối phó với nó đặc biệt.
  • khác
    • Nếu ký tự đầu tiên là 0, loại bỏ nó và thêm mã quốc gia quốc tế
    • Đảm bảo ký tự đầu tiên là +.

Không có bất kỳ câu trả lời dễ dàng để này, bởi vì không có quốc tế thiết lập quy tắc không bao số điện thoại công việc.

0

Làm thế nào về điều này. Điều này được viết ra khỏi đầu của tôi:

string sourcePhoneNumber = "...."; 
string phoneNumber = "...."; 

int baseRegionCountryCode = 44; 

if (phoneNumber.StartsWith("0") && !phoneNumber.StartsWith("00")) 
{ 
    phoneNumber = phoneNumber.SubString(0, 1); 
    phoneNumber = String.Format("{0}{1}", baseRegionCountryCode, phoneNumber); 
} 
else if (phoneNumber.StartsWith("+")) 
{ 
    phoneNumber = phoneNumber.Replace("+", "00"); 
} 

if (sourcePhoneNumber == phoneNumber) 
{ 
    // do something awesome.... 
}