formatAsPhoneNumber method

String formatAsPhoneNumber()

Formats string as a phone number based on length

Example:

"1234567890".formatAsPhoneNumber(); // Returns "(123) 456-7890"
"123456".formatAsPhoneNumber(); // Returns "12-34-56"

Implementation

String formatAsPhoneNumber() {
  if (isEmpty) return this;
  final digitsOnly = replaceAll(RegExp(r'\D'), '');

  if (digitsOnly.length == 10) {
    return "(${digitsOnly.substring(0, 3)}) ${digitsOnly.substring(3, 6)}-${digitsOnly.substring(6)}";
  } else if (digitsOnly.length > 6) {
    // Format as international number or custom format for different lengths
    return "${digitsOnly.substring(0, 3)}-${digitsOnly.substring(3, 6)}-${digitsOnly.substring(6)}";
  } else if (digitsOnly.length > 4) {
    return "${digitsOnly.substring(0, 2)}-${digitsOnly.substring(2, 4)}-${digitsOnly.substring(4)}";
  }
  return digitsOnly;
}