package com.levelup.java.string;
import static org.junit.Assert.assertEquals;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import com.google.common.base.CharMatcher;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
import com.google.i18n.phonenumbers.NumberParseException;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
/**
* This java example will demonstrate splitting, parsing
* or extract a phone number from a string.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/parse-phone-number-from-string/'>Parse/Split/Extract phone number</a>
*
*/
public class ParsePhoneNumber {
@Test
public void parse_phone_number_java () {
String formattedPhoneNumber = "123-456-7890";
String [] phoneNumberElements = formattedPhoneNumber.split("-");
String areaCode = phoneNumberElements[0];
String prefix = phoneNumberElements[1];
String lineNumber = phoneNumberElements[2];
assertEquals("123", areaCode);
assertEquals("456", prefix);
assertEquals("7890", lineNumber);
}
@Test
public void parse_phone_number_guava () {
String formattedPhoneNumber = "(123) 456-7890";
Iterable<String> phoneSplit = Splitter.on(CharMatcher.anyOf("-)("))
.omitEmptyStrings().trimResults().split(formattedPhoneNumber);
String areaCode = Iterables.get(phoneSplit, 0);
String prefix = Iterables.get(phoneSplit, 1);
String lineNumber = Iterables.get(phoneSplit, 2);
assertEquals("123", areaCode);
assertEquals("456", prefix);
assertEquals("7890", lineNumber);
}
@Test
public void parse_phone_number_apache_commons () {
String formattedPhoneNumber = "123-456-7890";
String [] phoneNumberElements = StringUtils.split(formattedPhoneNumber, "-");
String areaCode = phoneNumberElements[0];
String prefix = phoneNumberElements[1];
String lineNumber = phoneNumberElements[2];
assertEquals("123", areaCode);
assertEquals("456", prefix);
assertEquals("7890", lineNumber);
}
@Test
public void parse_phone_number_google_libphonenumber () throws NumberParseException {
String formattedPhoneNumber = "(123) 456-7890 x 1234";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumber phonenumber = phoneUtil.parse(formattedPhoneNumber, "US");
assertEquals(1, phonenumber.getCountryCode());
assertEquals("1234", phonenumber.getExtension());
assertEquals(1234567890, phonenumber.getNationalNumber());
}
}