Вы можете использовать регулярное выражение:
let str = "lat/lng: (-6.2222391,106.7035684)"
let rg = NSRange(location: 0, length: (str as NSString).length)
let latRegex = try! NSRegularExpression(pattern: "(?<=\\()[+-\\.0-9]+(?=,)")
(?<=\\()
равно положительный взгляд позади , он ищет все, что предшествует (
, [+-\\.0-9]+
нетерпеливо ищет по крайней мере один или несколько символов, которые являются +
, -
, .
или цифрой от 0
до 9
, (?=,)
является положительный взгляд , соответствует чему-либо, за которым следует ,
.
Теперь давайте воспользуемся этим регулярным выражением:
let latitude: Double? = latRegex.matches(in: str, range: rg)
.compactMap { Double(str[Range($0.range, in: str)!]) }
.first
if let lat = latitude {
print(lat) //-6.2222391
}
Таким же образом, мы можем получитьдолгота:
let longRegex = try! NSRegularExpression(pattern: "(?<=,)[+-\\.0-9]+(?=\\))")
let longitude: Double? = longRegex.matches(in: str, range: rg)
.compactMap { Double(str[Range($0.range, in: str)!]) }
.first
if let long = longitude {
print(long) //106.7035684
}
PS: для краткости я использовал принудительное развертывание здесь и там