2011-06-27 12 views
8

Tôi muốn tìm một công cụ/thư viện có thể lấy số điện thoại định dạng miễn phí do người dùng nhập thông qua trang web và phân tích chúng thành số phù hợp để gọi từ Quốc gia.Có một thứ như thư viện làm sạch số điện thoại

Điều này không đơn giản như âm thanh đầu tiên. Trang web cho phép mọi người trên khắp thế giới nhập số của họ theo bất kỳ cách nào họ chọn, vì vậy nhiều người nhập số quốc gia (một quốc gia cũng được cung cấp trong một lĩnh vực khác). Một số người nhập số quốc tế theo định dạng "chính xác" (với dấu "+"), một số người nhập số đó hơi kém một cách chính xác, sử dụng tiền tố quốc tế của quốc gia đó.

Tôi muốn thông báo cho thư viện/công cụ quốc gia mà tôi đang quay số và số điện thoại định dạng miễn phí và tùy chọn quốc gia tương ứng với (vì điều này sẽ giúp tạo mã quốc tế nếu không được nhập) , và nó sử dụng các mẫu được biết đến nhất đoán con số đó sẽ làm việc ở nước tôi gọi

vì vậy, ví dụ, khi gọi từ Mỹ đối với một số Vương quốc Anh:

+44 (0) 1225-344567 => 011441225344567 

Hoặc khi gọi từ Vương quốc Anh đến một số của Hoa Kỳ:

(613) 4562342 => 0016134562342 

Bất kỳ ai biết về bất kỳ giải pháp nào (lý tưởng Khuôn khổ thân thiện với .NET) sẽ tránh cho tôi chắc chắn tái phát minh ra bánh xe

+1

Thư viện như vậy nghe có vẻ rất thích hợp. Chưa kể, không có bất kỳ quy tắc chuẩn nào. Ngay cả trong cùng một quốc gia, có thể có các định dạng số khác nhau nếu bạn đang gọi đến/từ điện thoại di động đến một đường dây đất! Tuy nhiên, giải pháp tốt nhất cho các số điện thoại quốc tế là một hộp văn bản dạng tự do. –

+1

Cảm ơn. Chúng tôi đã có hộp định dạng miễn phí. Tôi đã liên kết điều này với hệ thống điện thoại của chúng tôi để mọi người có thể gọi cho khách hàng mà không cần phải (thường xuyên không chính xác) nhập số điện thoại vào điện thoại. Tuy nhiên, tôi đã phải thực hiện một số mã tùy chỉnh để xoa bóp các con số như trong các ví dụ trên ...và điều này càng khó khăn hơn khi chúng tôi có cả văn phòng ở Mỹ và Anh, và có một số mã đã xuất hiện để làm điều này (ngay cả khi chúng tôi cần trả tiền) - Tôi có cá lớn hơn để chiên ;) – Kram

+0

http://stackoverflow.com/q/187216/469210 xuất hiện tương tự. – borrible

Trả lời

2

Có: Java thông thường của Google, C++ và thư viện Javascript để phân tích, định dạng, lưu trữ và xác nhận số điện thoại quốc tế hiện đã được chuyển đến C#:

https://github.com/erezak/libphonenumber-csharp

Good Luck!

+0

Từ những gì tôi có thể nói điều này thực sự là lựa chọn tốt nhất ... tuy nhiên thực sự muốn nó trong. Net cũng ... chỉ cần đi qua này, mà tuyên bố để làm công việc: http: //blog.thekieners.com/2011/06/06/using-googles-libphonenumber-in-microsoft-net-with-c/ – Kram

0

Không, không có :) Có rất ít quy tắc quản lý số điện thoại giữa các quốc gia . Một số quốc gia thậm chí có nhiều đại diện.

Vương quốc Anh ví dụ đã biến mã vùng có kích thước ví dụ:

  • 0121 = Birmingham
  • 01223 = Cambridge
0

Có một "tiêu chuẩn" để định dạng quốc tế (trong nước và quốc) điện thoại số. Họ trông như thế này: +31 42 123 4567 (+ số tiền tố số quốc gia). Ví dụ được lấy từ Wikipedia. Mặc dù bạn không nên mong đợi bất cứ ai nhập nó theo cách đó. Theo kinh nghiệm của tôi, nhiều người dùng nhất định sẽ tuân theo định dạng mà họ quen thuộc.

Tôi không biết bất kỳ thư viện nào sẽ chuyển đổi giữa tất cả các đại diện (chủ yếu là địa phương) cho tôi được đề cập đến hoặc bất kỳ định dạng nào khác.

7

Tôi đã triển khai thực hiện điều này, Mark. Tôi làm việc cho một nhà cung cấp dịch vụ không dây và có một ứng dụng gửi SMS quốc tế. Tôi không biết về bất kỳ thư viện của bên thứ ba nào thực hiện các quy tắc này. Như đã đề cập ở trên, người ta không thể chỉ đối phó với đầu vào ngẫu nhiên vì các định dạng số điện thoại khác nhau giữa các quốc gia. Một số quốc gia như Đức có mã vùng và số điện thoại có chiều dài thay đổi. Nếu họ không đặt mã quốc gia vào đó bạn bị đánh chìm. Tuy nhiên, trong trường hợp của tôi, tôi có thể giả sử nếu thiếu mã quốc gia, đó là số điện thoại ở Hoa Kỳ. Kết quả của bộ lọc của tôi đã được chứng minh là rất chính xác với người dùng và đầu vào tôi đã có.

Người ta có thể đưa ra một số giả định, và bằng cách biết đối tượng mục tiêu, ghi lại đầu vào và phân tích, người ta có thể nhận được mọi thứ được gọi. Thực hiện đầu tiên của tôi là ứng dụng web "nhãn trắng" được sử dụng để thử nghiệm mọi người khắp nơi trên thế giới. Tôi nhanh chóng thấy rằng hầu hết người nước ngoài có hành động của họ với nhau và được sử dụng để định dạng gần như chuẩn +. Nó thường là người Mỹ nhập số điện thoại bị nhầm lẫn nhất. Người châu Âu rất quen với việc quay số quốc tế.

Quy tắc đầu tiên là loại bỏ mọi thứ trừ chữ số và dấu "+" hàng đầu.

Nếu số kết quả có ít hơn 8 chữ số, nó là rác, cung cấp lỗi người dùng.

Nếu số kết quả bắt đầu bằng dấu '+' giả định đó là định dạng chuẩn và 2-6 chữ số tiếp theo thể hiện "mã quốc gia". Tìm ra mã quốc gia sau đó xử lý các chữ số còn lại theo các quy tắc cho quốc gia đó.

Nếu số bắt đầu bằng 0, giả sử người nào đó đặt tiền tố truy cập quốc tế và bỏ số 0 và số 1, sau đó: nếu số còn lại là 10 chữ số, giả sử đó là số USA được nhập bởi người Mỹ, và xử lý cho phù hợp. Nếu số còn lại không phải là 10 chữ số, nhưng ít nhất 8, giả sử 2-6 chữ số đầu tiên là mã quốc gia, tra cứu mã quốc gia và xử lý theo quy tắc của quốc gia đó.

Nếu số bắt đầu bằng số 1 và tổng số là 11 chữ số, giả sử đó là số USA (hoặc Đảo Caribê) và xử lý tương ứng.

Nếu số bắt đầu bằng số 1 và không phải là 11 chữ số, hãy bỏ bớt số 1 đầu, xem có ít nhất 8 chữ số còn lại không và giả sử 2 đến 6 chữ số còn lại là mã quốc gia và quy trình cho mỗi quy tắc quốc gia.

Cuối cùng, với số không dẫn đầu bằng dấu +, 0 hoặc 1 và có ít nhất 8 chữ số, giả sử ký hiệu tiêu chuẩn không có dấu +, trước tiên là mã quốc gia, sử dụng 2 đến 6 chữ số đầu tiên là mã quốc gia và quy trình theo quy tắc của quốc gia đó.

Bí quyết trong tất cả điều này là lập bản đồ tất cả các mã quốc gia trên thế giới và thông tin về kế hoạch đánh số cho mỗi quốc gia. Tôi có bản đồ đó và các quy tắc cho nhiều quốc gia. Nếu bạn muốn thông tin này tôi muốn được chia sẻ, cùng với một số mã C# để tìm ra quốc gia nào. Nhắn tin cho tôi.

Một trợ giúp lớn trong việc này là đăng lại tên quốc gia mà phần mềm của bạn đang đoán cho người dùng. Họ sẽ hiểu rất nhanh nếu họ đang cố gắng nhập số điện thoại của Đức và phần mềm của bạn hỏi họ liệu họ có đang cố gắng quay số Guam không!

+0

+1 Câu trả lời hay, Christo. Rất toàn diện. –

+0

Liên lạc với bạn bằng cách nào, Christo? –

+0

@Peter Ông nói "Tôi làm việc cho một hãng truyền thông không dây" vì vậy đây là công việc trong ngày - rất có thể nó thuộc về chủ nhân của ông và ông không thể đưa nó cho bạn. (mà không cầu xin họ để mở nguồn) – Rup