как получить слово перед конкретным ключевым словом в предложении в Swift? - PullRequest
0 голосов
/ 05 апреля 2019

Aipda Karel Sasuit Tubun No.106B, RT.2 / RW.1, Ps.Бару, Каравачи, Кота Тангеранг, Бантен 15112, Индонезия "

У меня есть такой строковый адрес, и я хочу получить почтовый индекс 15112, который всегда располагается прямо перед", Индонезия "

Я новичок, извините, если это тривиально, так как я не могу найти его в Stackoverflow

Ответы [ 3 ]

0 голосов
/ 05 апреля 2019
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")
0 голосов
/ 05 апреля 2019

Вы можете использовать регулярное выражение:

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
}
0 голосов
/ 05 апреля 2019

Извините, я думаю, что это немного сложный метод, но он должен работать:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...