private static String impreciseFormatNumber(String number, String localNumber) //throws InvalidNumberException { number = number.ReplaceAll("[^0-9+]", ""); if (number[0] == '+') return number; if (localNumber[0] == '+') localNumber = localNumber.Substring(1); if (localNumber.Length == number.Length || number.Length > localNumber.Length) return "+" + number; int difference = localNumber.Length - number.Length; return "+" + localNumber.Substring(0, difference) + number; }
public static String formatNumber(String number, String localNumber) //throws InvalidNumberException { if (number.Contains("@")) { throw new InvalidNumberException("Possible attempt to use email address."); } number = number.ReplaceAll("[^0-9+]", ""); if (number.Length == 0) { throw new InvalidNumberException("No valid characters found."); } if (number[0] == '+') return number; try { PhoneNumberUtil util = PhoneNumberUtil.GetInstance(); PhoneNumber localNumberObject = util.Parse(localNumber, null); String localCountryCode = util.GetRegionCodeForNumber(localNumberObject); //Log.w(TAG, "Got local CC: " + localCountryCode); PhoneNumber numberObject = util.Parse(number, localCountryCode); return util.Format(numberObject, PhoneNumberFormat.E164); } catch (NumberParseException e) { //Log.w(TAG, e); return impreciseFormatNumber(number, localNumber); } }
public static String formatE164(String countryCode, String number) { if (countryCode == string.Empty || number == string.Empty || number.Length < 3) return string.Empty; try { PhoneNumberUtil util = PhoneNumberUtil.GetInstance(); int parsedCountryCode = Convert.ToInt32(countryCode); PhoneNumber parsedNumber = util.Parse(number, util.GetRegionCodeForCountryCode(parsedCountryCode)); return util.Format(parsedNumber, PhoneNumberFormat.E164); } catch (NumberParseException npe) { return string.Empty; } catch (Exception npe) { return string.Empty; } return "+" + countryCode.ReplaceAll("[^0-9]", "").ReplaceAll("^0*", "") + number.ReplaceAll("[^0-9]", ""); }