abstract to String extension method
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
10f4f1db11
commit
6661e60333
@ -71,7 +71,7 @@ extension InputField {
|
||||
let rawNumber = newText.filter { $0.isNumber }
|
||||
|
||||
// Format the number with dashes
|
||||
let formattedNumber = formatUSNumber(rawNumber)
|
||||
let formattedNumber = rawNumber.formatUSNumber()
|
||||
|
||||
// Set the formatted text
|
||||
textField.text = formattedNumber
|
||||
@ -93,44 +93,45 @@ extension InputField {
|
||||
|
||||
override func textFieldDidEndEditing(_ inputField: InputField, textField: UITextField) {
|
||||
if let text = inputField.text {
|
||||
let rawNumber = text.filter { $0.isNumber }
|
||||
textField.text = formatUSNumber(rawNumber)
|
||||
textField.text = text.formatUSNumber()
|
||||
value = textField.text
|
||||
}
|
||||
}
|
||||
|
||||
func formatUSNumber(_ number: String) -> String {
|
||||
// Format the number in the style XXX-XXX-XXXX
|
||||
let areaCodeLength = 3
|
||||
let centralOfficeCodeLength = 3
|
||||
let lineNumberLength = 4
|
||||
|
||||
var formattedNumber = ""
|
||||
|
||||
if number.count > 0 {
|
||||
formattedNumber.append(contentsOf: number.prefix(areaCodeLength))
|
||||
}
|
||||
|
||||
if number.count > areaCodeLength {
|
||||
let startIndex = number.index(number.startIndex, offsetBy: areaCodeLength)
|
||||
let endIndex = number.index(startIndex, offsetBy: min(centralOfficeCodeLength, number.count - areaCodeLength))
|
||||
let centralOfficeCode = number[startIndex..<endIndex]
|
||||
formattedNumber.append("-")
|
||||
formattedNumber.append(contentsOf: centralOfficeCode)
|
||||
}
|
||||
|
||||
if number.count > areaCodeLength + centralOfficeCodeLength {
|
||||
let startIndex = number.index(number.startIndex, offsetBy: areaCodeLength + centralOfficeCodeLength)
|
||||
let endIndex = number.index(startIndex, offsetBy: min(lineNumberLength, number.count - areaCodeLength - centralOfficeCodeLength))
|
||||
let lineNumber = number[startIndex..<endIndex]
|
||||
formattedNumber.append("-")
|
||||
formattedNumber.append(contentsOf: lineNumber)
|
||||
}
|
||||
|
||||
return formattedNumber
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension String {
|
||||
public func formatUSNumber() -> String {
|
||||
// Format the number in the style XXX-XXX-XXXX
|
||||
let areaCodeLength = 3
|
||||
let centralOfficeCodeLength = 3
|
||||
let lineNumberLength = 4
|
||||
|
||||
var formattedNumber = ""
|
||||
let number = filter { $0.isNumber }
|
||||
|
||||
if number.count > 0 {
|
||||
formattedNumber.append(contentsOf: number.prefix(areaCodeLength))
|
||||
}
|
||||
|
||||
if number.count > areaCodeLength {
|
||||
let startIndex = number.index(number.startIndex, offsetBy: areaCodeLength)
|
||||
let endIndex = number.index(startIndex, offsetBy: min(centralOfficeCodeLength, number.count - areaCodeLength))
|
||||
let centralOfficeCode = number[startIndex..<endIndex]
|
||||
formattedNumber.append("-")
|
||||
formattedNumber.append(contentsOf: centralOfficeCode)
|
||||
}
|
||||
|
||||
if number.count > areaCodeLength + centralOfficeCodeLength {
|
||||
let startIndex = number.index(number.startIndex, offsetBy: areaCodeLength + centralOfficeCodeLength)
|
||||
let endIndex = number.index(startIndex, offsetBy: min(lineNumberLength, number.count - areaCodeLength - centralOfficeCodeLength))
|
||||
let lineNumber = number[startIndex..<endIndex]
|
||||
formattedNumber.append("-")
|
||||
formattedNumber.append(contentsOf: lineNumber)
|
||||
}
|
||||
|
||||
return formattedNumber
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user