Home

2013-08-07 - THIS PORT IS NO LONGER MAINTAINED, FEEL FREE TO FORK THIS REPOSITORY AND KEEP UP WITH UPSTREAM UPDATES.

Please checkout csharp branch to get C# code

Conversion Notes

C# port of Google's libphonenumber library:

http://code.google.com/p/libphonenumber/

The code was rewritten from the Java source mostly unchanged, please refer to the original documentation for sample code and API documentation.

The original Apache License 2.0 was preserved.

See csharp/README.txt for details about the port.

Features

  • Parsing/formatting/validating phone numbers for all countries/regions of the world.
  • GetNumberType - gets the type of the number based on the number itself; able to distinguish Fixed-line, Mobile, Toll-free, Premium Rate, Shared Cost, VoIP and Personal Numbers (whenever feasible).
  • IsNumberMatch - gets a confidence level on whether two numbers could be the same.
  • GetExampleNumber/GetExampleNumberByType - provides valid example numbers for 218 countries/regions, with the option of specifying which type of example phone number is needed.
  • IsPossibleNumber - quickly guessing whether a number is a possible phonenumber by using only the length information, much faster than a full validation.
  • AsYouTypeFormatter - formats phone numbers on-the-fly when users enter each digit.
  • FindNumbers - finds numbers in text input

Packaging

The library is available on NuGet:

https://nuget.org/packages/libphonenumber-csharp

People have asked the NuGet assembly to be "strong named" before being pushed in NuGet. Not working much with .NET anymore, I do not have relevant experience about this issue but the lengthy discussion below convinced me the problem was still heavily argued in .NET world and even at NuGet level. Reading the current conclusions I prefer not to sign the assemblies for now, waiting for either NuGet to provide a solution at packaging level or to see a broader concensus emerge in public discussions.

"The assembly strong naming conundrum": https://nuget.codeplex.com/discussions/247827

Updated

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.