Upotreba libphonenumber za potvrdu telefonskih brojeva

1. Pregled

U ovom brzom vodiču vidjet ćemo kako se koristi Googleova biblioteka otvorenog koda libphonenumber za provjeru telefonskih brojeva na Javi.

2. Ovisnost Mavena

Prvo ćemo morati dodati ovisnost za ovu knjižnicu u našu pom.xml:

 com.googlecode.libphonenumber libphonenumber 8.12.10 

Informacije o najnovijoj verziji nalaze se na Maven Central.

Sada smo opremljeni za korištenje svih funkcija koje ova knjižnica nudi.

3. PhoneNumberUtil

Biblioteka nudi klasu korisnosti, PhoneNumberUtil, koji pruža nekoliko metoda za poigravanje s telefonskim brojevima.

Pogledajmo nekoliko primjera kako možemo koristiti njegove različite API-je za provjeru valjanosti.

Važno je da ćemo u svim primjerima koristiti singleton objekt ove klase za pozivanje metoda:

PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance ();

3.1. jePossibleNumber

Koristeći StrhoneNumberUtil # isPossibleNumber, možemo provjeriti je li određeni broj moguć za određeni pozivni broj države ili regije.

Kao primjer uzmimo Sjedinjene Države koje imaju pozivni broj države 1. Možemo provjeriti jesu li navedeni telefonski brojevi mogući američki brojevi na ovaj način:

@Test public void givenPhoneNumber_whenPossible_thenValid () {Broj telefonskog broja = novi telefonski broj (); number.setCountryCode (1) .setNationalNumber (123000L); assertFalse (phoneNumberUtil.isPossibleNumber (broj)); assertFalse (phoneNumberUtil.isPossibleNumber ("+ 1 343 253 00000", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("(343) 253-00000", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("biraj p za pizzu", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("123-000", "US")); }

Ovdje, koristili smo i drugu varijantu ove funkcije prolazeći u regiji da očekujemo da se broj pozove kao a Niz.

3.2. isPossibleNumberForType

Knjižnica prepoznaje različite vrste telefonskih brojeva, poput fiksne, mobilne, besplatne, govorne pošte, VoIP-a, pager-a i mnogih drugih.

Njegova korisna metoda jePossibleNumberForType provjerava je li dati broj moguć za određeni tip u određenoj regiji.

Kao primjer, idemo na Argentinu jer ona omogućava različite moguće duljine brojeva za različite vrste.

Stoga ga možemo koristiti za demonstraciju mogućnosti ovog API-ja:

@Test public void givenPhoneNumber_whenPossibleForType_thenValid () {Broj telefonskog broja = novi telefonski broj (); number.setCountryCode (54); number.setNationalNumber (123456); assertTrue (phoneNumberUtil.isPossibleNumberForType (broj, PhoneNumberType.FIXED_LINE)); assertFalse (phoneNumberUtil.isPossibleNumberForType (broj, PhoneNumberType.TOLL_FREE)); number.setNationalNumber (12345678901L); assertFalse (phoneNumberUtil.isPossibleNumberForType (broj, PhoneNumberType.FIXED_LINE)); assertTrue (phoneNumberUtil.isPossibleNumberForType (broj, PhoneNumberType.MOBILE)); assertFalse (phoneNumberUtil.isPossibleNumberForType (broj, PhoneNumberType.TOLL_FREE)); }

Kao što vidimo, gornji kod potvrđuje da Argentina dopušta 6-znamenkasti brojevi fiksne linije i 11-znamenkasti mobilni brojevi.

3.3. jeAlfaBroj

Ovom se metodom provjerava je li dani telefonski broj valjan alfanumerički, poput 325-AUTOMOBILI:

@Test javna praznina danaPhoneNumber_whenAlphaNumber_thenValid () {assertTrue (phoneNumberUtil.isAlphaNumber ("325-CARS")); assertTrue (phoneNumberUtil.isAlphaNumber ("0800 POPRAVAK")); assertTrue (phoneNumberUtil.isAlphaNumber ("1-800-MOJ-JABUKA")); assertTrue (phoneNumberUtil.isAlphaNumber ("1-800-MOJ-JABUKA ..")); assertFalse (phoneNumberUtil.isAlphaNumber ("+ 876 1234-1234")); }

Da bismo pojasnili, valjani alfa-broj na početku sadrži najmanje tri znamenke, nakon kojih slijede tri ili više abecednih slova. Gornja korisna metoda prvo oduzima zadani ulaz s bilo kojeg oblikovanja, a zatim provjerava postoji li ovo stanje.

3.4. isValidNumber

Prethodni API o kojem smo razgovarali brzo provjerava telefonski broj samo na temelju njegove duljine. S druge strane, isValidNumber vrši potpunu provjeru valjanosti pomoću prefiksa, kao i podataka o duljini:

@Test public void givenPhoneNumber_whenValid_thenOK () baca iznimku {PhoneNumber phone = phoneNumberUtil.parse ("+ 911234567890", CountryCodeSource.UNSPECIFIED.name ()); assertTrue (phoneNumberUtil.isValidNumber (telefon)); assertTrue (phoneNumberUtil.isValidNumberForRegion (telefon, "IN")); assertFalse (phoneNumberUtil.isValidNumberForRegion (telefon, "SAD")); assertTrue (phoneNumberUtil.isValidNumber (phoneNumberUtil.getExampleNumber ("IN"))); }

Ovdje se broj provjerava kad nismo naveli regiju, a također i kada jesmo.

3.5. jeBrojGeografski

Ova metoda provjerava ima li određeni broj zemljopis ili regiju povezanu s njim:

@Test public void givenPhoneNumber_whenNumberGeographic_thenValid () baca NumberParseException {PhoneNumber phone = phoneNumberUtil.parse ("+ 911234567890", "IN"); assertTrue (phoneNumberUtil.isNumberGeographic (telefon)); phone = novi broj telefona (). setCountryCode (1) .setNationalNumber (2530000L); assertFalse (phoneNumberUtil.isNumberGeographic (telefon)); phone = novi broj telefona (). setCountryCode (800) .setNationalNumber (12345678L); assertFalse (phoneNumberUtil.isNumberGeographic (telefon)); }

Ovdje smo, u prvom tvrdnji gore, dali telefonski broj u međunarodnom formatu s pozivnim brojem regije, a metoda se vratila istinitom. Druga tvrdnja koristi lokalni broj iz SAD-a, a treća besplatni broj. Dakle, API je vratio false za ovo dvoje.

4. Zaključak

U ovom uputstvu vidjeli smo neke od funkcionalnosti koje nudi libphonenumber za formatiranje i provjeru valjanosti telefonskih brojeva pomoću uzoraka koda.

Ovo je bogata knjižnica koja nudi mnogo više uslužnih funkcija i brine se o većini potreba naše aplikacije za formatiranje, raščlanjivanje i provjeru telefonskih brojeva.

Kao i uvijek, izvorni kod dostupan je na GitHub-u.


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