如何从地址中提取城市和州代码

时间:2020-02-13 23:44:46

标签: swift

我有一个字符串var看起来像这样:

str = "1234 South St, Boston, MA"

有什么方法可以仅提取城市和州代码? 所以我想要这个结果:

extractedStr = "Boston, MA"

2 个答案:

答案 0 :(得分:4)

您可以将NSDataDetector用于CheckingType.address,并从其NSTextCheckingKey获取城市和州addressComponents

let str = "1234 South St, Boston, MA"
do {
    if let addressComponents = try NSDataDetector(types: NSTextCheckingResult.CheckingType.address.rawValue)
        .matches(in: str, range: NSRange(location: 0, length: str.utf16.count)).first?.addressComponents,
        let city = addressComponents[.city],
        let state = addressComponents[.state] {

        print("city:", city)
        print("state:", state)

        let result = "\(city), \(state)"
        print(result)
    }
} catch {
    print(error)
}

这将打印

城市:波士顿

状态:MA

马萨诸塞州波士顿

答案 1 :(得分:0)

如果您确定字符串的结构:(swift 4.0 +)

var str = "1234 South St, Boston, MA"
let splitted = str.components(separatedBy: ",")
splitted.map{ $0.replacingOccurrences(of: " ", with: "") }
var city = splitted[1]
var state = splitted[2]

print("City:\(city), State:\(state)")
相关问题