struct TextHelper {
static func sanatizeNumber(_ phone: String) -> String {
return phone.replacingOccurrences(of: " ", with: "")
.replacingOccurrences(of: ") ", with: "")
.replacingOccurrences(of: "(", with: "")
.replacingOccurrences(of: ")", with: "")
.replacingOccurrences(of: "-", with: "")
}
// I want to know is this function going to sanitise the number even if they don’t have all the brackets and spaces. I mean if the user has a phone number but no brackets . Is this function going to work or the phon number has to have all the brackets and dashes and spaces.
If the number does not have Open and Close brackets or - or a space then it wont do anything to it. It will just return the number that was passed in.
@riskjockeyy I would suggest not doing it the way you are doing it. You are basically creating a new String
every time you call replaceOccurrences(of:with:)
. And what if there are characters besides numbers and the ones you are removing? (Like, say, the user accidentally types a letter or punctuation.)
Instead, use something like this, that removes everything that is not a number:
func sanitizePhoneNumber(_ phone: String) -> String {
//take the set of all decimal digits and
// invert it, meaning we get everything that
// IS NOT a decimal digit
//then we split the string using that set and rejoin it
// but now without those characters
phone.components(separatedBy: .decimalDigits.inverted).joined()
}
Usage:
print(sanitizePhoneNumber("(555) 631-3287")) //5556313287
//user accidentally types a letter
print(sanitizePhoneNumber("(555) 631-3287a")) //5556313287
//but using your original function
print(sanatizeNumber("(555) 631-3287a")) //5556313287a
Just a suggestion.
1 Like
The reason I asked this question because this function is working ok on a simulator where number are formatted in (###) ### - ###
but when I run the app in my mobile the numbers for formatted in ##### #####
or if I manually add a country code like +44 then it is formatted in +## ##### #####
and it does’t show the numbers in a view where I want to see them. even if they are on firebase database.