Používanie libphonenumber na overenie telefónnych čísel

1. Prehľad

V tomto rýchlom návode uvidíme, ako sa používa Knižnica open-source spoločnosti Google libphonenumber na overenie telefónnych čísel v prostredí Java.

2. Závislosť od Maven

Najskôr budeme musieť do našej knižnice pridať závislosť tejto knižnice pom.xml:

 com.googlecode.libphonenumber libphonenumber 8.12.10 

Informácie o najnovšej verzii nájdete na serveri Maven Central.

Teraz sme vybavení využívať všetky funkcie, ktoré táto knižnica ponúka.

3. PhoneNumberUtil

Knižnica poskytuje učebnú triedu, PhoneNumberUtil, ktorá poskytuje niekoľko spôsobov hrania sa s telefónnymi číslami.

Pozrime sa na niekoľko príkladov, ako môžeme na overenie použiť jeho rôzne API.

Dôležité je, že vo všetkých príkladoch budeme na volanie metód používať singletonový objekt tejto triedy:

PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance ();

3.1. isPossibleNumber

Použitím PhoneNumberUtil # isPossibleNumber, môžeme skontrolovať, či je dané číslo možné pre konkrétny kód krajiny alebo región.

Ako príklad si vezmime USA, ktoré majú kód krajiny 1. Môžeme skontrolovať, či dané telefónne čísla sú možné čísla USA týmto spôsobom:

@Test public void givenPhoneNumber_whenPossible_thenValid () {PhoneNumber number = new PhoneNumber (); number.setCountryCode (1) .setNationalNumber (123000L); assertFalse (phoneNumberUtil.isPossibleNumber (číslo)); assertFalse (phoneNumberUtil.isPossibleNumber ("+ 1 343 253 00000", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("(343) 253-00000", "USA")); assertFalse (phoneNumberUtil.isPossibleNumber ("dial p pre pizzu", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("123-000", "US")); }

Tu, použili sme aj iný variant tejto funkcie obídením regiónu že očakávame vytočenie čísla ako a String.

3.2. isPossibleNumberForType

Knižnica rozpoznáva rôzne typy telefónnych čísel, ako napríklad pevné linky, mobilné telefóny, bezplatné čísla, hlasové správy, VoIP, pagery a mnoho ďalších.

Jeho úžitková metóda isPossibleNumberForType skontroluje, či je dané číslo možné pre daný typ v konkrétnej oblasti.

Ako príklad poďme na Argentínu, pretože umožňuje rôzne možné dĺžky čísel pre rôzne typy.

Preto ho môžeme použiť na demonštráciu schopností tohto API:

@Test public void givenPhoneNumber_whenPossibleForType_thenValid () {PhoneNumber number = new PhoneNumber (); number.setCountryCode (54); number.setNationalNumber (123456); assertTrue (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.FIXED_LINE)); assertFalse (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.TOLL_FREE)); number.setNationalNumber (12345678901L); assertFalse (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.FIXED_LINE)); assertTrue (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.MOBILE)); assertFalse (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.TOLL_FREE)); }

Ako vidíme, vyššie uvedený kód potvrdzuje, že Argentína povoľuje 6-miestne čísla pevnej linky a 11-miestne čísla mobilných telefónov.

3.3. isAlphaNumber

Táto metóda sa používa na overenie, či je dané telefónne číslo platné alfanumerické číslo, ako napr 325-AUTÁ:

@Test public void givenPhoneNumber_whenAlphaNumber_thenValid () {assertTrue (phoneNumberUtil.isAlphaNumber ("325-CARS")); assertTrue (phoneNumberUtil.isAlphaNumber ("0800 OPRAVA")); assertTrue (phoneNumberUtil.isAlphaNumber ("1-800-MY-APPLE")); assertTrue (phoneNumberUtil.isAlphaNumber ("1-800-MY-APPLE ..")); assertFalse (phoneNumberUtil.isAlphaNumber ("+ 876 1234-1234")); }

Na objasnenie platí, že platné alfa číslo obsahuje najmenej tri číslice na začiatku, za ktorými nasledujú tri alebo viac písmen abecedy. Vyššie uvedená úžitková metóda najskôr odstráni daný vstup z formátovania a potom skontroluje tento stav.

3.4. isValidNumber

Predchádzajúce rozhranie API, o ktorom sme hovorili, rýchlo kontroluje telefónne číslo iba na základe jeho dĺžky. Na druhej strane, isValidNumber vykoná úplnú validáciu pomocou informácií o predpise a dĺžke:

@Test public void givenPhoneNumber_whenValid_thenOK () vyvolá výnimku {PhoneNumber phone = phoneNumberUtil.parse ("+ 911234567890", CountryCodeSource.UNSPECIFIED.name ()); assertTrue (phoneNumberUtil.isValidNumber (phone)); assertTrue (phoneNumberUtil.isValidNumberForRegion (telefón, „IN“)); assertFalse (phoneNumberUtil.isValidNumberForRegion (telefón, „USA“)); assertTrue (phoneNumberUtil.isValidNumber (phoneNumberUtil.getExampleNumber ("IN"))); }

Tu sa číslo overí, keď sme neurčili región a tiež kedy sme tak urobili.

3.5. isNumberGeografické

Táto metóda kontroluje, či je k danému číslu priradená geografická oblasť alebo región:

@Test public void givenPhoneNumber_whenNumberGeographical_thenValid () hodí NumberParseException {PhoneNumber phone = phoneNumberUtil.parse ("+ 911234567890", "IN"); assertTrue (phoneNumberUtil.isNumberGeographical (phone)); phone = new PhoneNumber (). setCountryCode (1) .setNationalNumber (2530000L); assertFalse (phoneNumberUtil.isNumberGeographical (phone)); phone = new PhoneNumber (). setCountryCode (800) .setNationalNumber (12345678L); assertFalse (phoneNumberUtil.isNumberGeographical (phone)); }

Tu sme v prvom tvrdení vyššie dali telefónne číslo v medzinárodnom formáte s regionálnym kódom a metóda sa vrátila k hodnote true. Druhé tvrdenie používa miestne číslo z USA a tretie bezplatné číslo. API teda pre tieto dva vrátilo hodnotu false.

4. Záver

V tomto tutoriáli sme videli niektoré z funkcií, ktoré ponúka libphonenumber formátovať a overovať telefónne čísla pomocou vzorov kódov.

Toto je bohatá knižnica, ktorá ponúka oveľa viac užitočných funkcií a stará sa o väčšinu našich aplikačných potrieb pre formátovanie, analýzu a overovanie telefónnych čísel.

Ako vždy, zdrojový kód je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found