#swift
#swift
Вопрос:
Aipda Карел Сасуит Тубун №106B, RT.2 / RW.1, Ps. Baru, Каравачи, Кота Тангеранг, Бантен 15112, Индонезия»
У меня есть такой строковый адрес, и я хочу получить почтовый индекс 15112
, который всегда располагается прямо перед ‘, Индонезия’
Я новичок, прошу прощения, если это тривиально, поскольку я не могу найти его в Stackoverflow
Ответ №1:
let address = "Aipda Karel Sasuit Tubun No.106B, RT.2/RW.1, Ps. Baru, Karawaci, Kota Tangerang, Banten 15112, Indonesia"
func postcode(from address: String, for area: String) -> String? {
let array = address.replacingOccurrences(of: ",", with: "").components(separatedBy: " ")
if let index = array.lastIndex(where: { $0.contains(area) }) {
return array[index - 1]
}
return nil
}
postcode(from: address, for: "Indonesia")
Ответ №2:
Извините, я думаю, что это немного затянутый метод, но это должно сработать:
let address = "Aipda Karel Sasuit Tubun No.106B, RT.2/RW.1, Ps. Baru, Karawaci, Kota Tangerang, Banten 15112, Indonesia"
let keyword = "Indonesia"
let components: [String] = address.split(separator: " ").map({ String($0).replacingOccurrences(of: ",", with: "") })
var postCode = components.first ?? ""
for comp in components {
if comp == keyword {
break
}
postCode = comp
}
print(postCode)
Ответ №3:
Вы могли бы использовать регулярное выражение :
let str = "Aipda Karel Sasuit Tubun No.106B, RT.2/RW.1, Ps. Baru, Karawaci, Kota Tangerang, Banten 15112, Indonesia"
let range = NSRange(location: 0, length: str.utf16.count)
let regex = try! NSRegularExpression(pattern: "[0-9] (?=, Indonesia)")
if let match = regex.firstMatch(in: str, range: range) {
let subStr = String(str[Range(match.range, in: str)!])
print(subStr) //15112
}