Thanks again for your help with this.
Although I have not used your solution exactly it did help me a great deal to construct a solution (example enclosed).
Still working on these examples of input error…
-.234567 (If (Left of “.”) contains “-“ then the length of (Left of “.” ) minimum = 2).
1-2.123456 (If (Left of “.”) contains “-“ it should be the first character.
I understand your solution is far better because it reduces the amount of code etc. but I am not ready to rebuild my app from the ground-up yet. I need to learn and understand Swift alot more before I tackle that.
// In this example “coordinate” is either Latitude or Longitude
// Error example = 00.000000
// If coordinate contains more than one “-“
if(coordinate.filter( { $0 == "-" } ).count > 1) {
coordinate = "00.000000" // Reset coordinate
}
// If coordinate contains more than one “.“
if(coordinate.filter( { $0 == "." } ).count != 1) {
coordinate = "00.000000" // Reset coordinate
}
// If coordinate contains an illegal character
// Get coordinate length before check
let coordinateLengthBefore = coordinate.count
let validCharsCoordinate: Set<Character> = ["-", ".", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] // Allowed characters
// Remove characters not in Character Set
coordinate.removeAll(where: { !validCharsCoordinate.contains($0) } )
// Get coordinate length after check
let coordinateLengthAfter = coordinate.count
// If coordinate length is different due to illegal character removal
if coordinateLengthBefore != coordinateLengthAfter {
coordinate = "00.000000" // Reset coordinate
}
// Check each side of the "."
// Check coordinate before the "."
let coordinateStr = coordinate
let coordinateCh = Character(".")
let coordinateResult = coordinateStr.split(separator: coordinateCh).map { String($0) }
let coordinateLeftSplit = coordinateResult[0]
let coordinateLeftCount = coordinateLeftSplit.count
if coordinateLeftCount >= 4 { // More than 3 characters before "."
cards.firstCardLatitude = "00.000000" // Reset coordinate
}
// Check coordinate after the "."
let coordinateRightSplit = coordinateResult[1]
if(coordinateRightSplit.filter( { $0 == "-" } ).count > 0) {
coordinate = "00.000000" // Reset coordinate ("-" not allowed)
}