added telephone number formatter
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
ee4d976b2b
commit
9849636a1b
40
EmployeeDirectory/Extensions/String.swift
Normal file
40
EmployeeDirectory/Extensions/String.swift
Normal file
@ -0,0 +1,40 @@
|
||||
//
|
||||
// String.swift
|
||||
// EmployeeDirectory
|
||||
//
|
||||
// Created by Matt Bruce on 1/20/25.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension String {
|
||||
/// Formats a string into a US phone number format (XXX-XXX-XXXX).
|
||||
/// Non-numeric characters are removed, and formatting is applied based on the length of the string.
|
||||
/// - Returns: A formatted phone number as a string.
|
||||
internal func formatUSNumber() -> String {
|
||||
// format the number
|
||||
return format(with: "XXX-XXX-XXXX", phone: self)
|
||||
}
|
||||
|
||||
internal func format(with mask: String, phone: String) -> String {
|
||||
let numbers = filter { $0.isNumber }
|
||||
var result = ""
|
||||
var index = numbers.startIndex // numbers iterator
|
||||
|
||||
// iterate over the mask characters until the iterator of numbers ends
|
||||
for ch in mask where index < numbers.endIndex {
|
||||
if ch == "X" {
|
||||
// mask requires a number in this place, so take the next one
|
||||
result.append(numbers[index])
|
||||
|
||||
// move numbers iterator to the next index
|
||||
index = numbers.index(after: index)
|
||||
|
||||
} else {
|
||||
result.append(ch) // just append a mask character
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ public class EmployeeCellViewModel: ObservableObject {
|
||||
// Initialize properties
|
||||
self.uuid = employee.uuid.uuidString
|
||||
self.fullName = employee.fullName
|
||||
self.phoneNumber = employee.phoneNumber
|
||||
self.phoneNumber = employee.phoneNumber?.formatUSNumber()
|
||||
self.emailAddress = employee.emailAddress
|
||||
self.biography = employee.biography
|
||||
self.team = employee.team
|
||||
|
||||
Loading…
Reference in New Issue
Block a user