У меня есть строка ниже ...
let string = “[@he man:user:123] [@super man:user:456] [@bat man:user:789]”
Я применяю регулярное выражение, чтобы получить только такие имена, как ...
func findMentionText2() -> [String] {
var arr_hasStrings:[String] = []
let regex = try? NSRegularExpression(pattern: "(@[a-zA-Z0-9_\\p{N}]*)", options: [])
if let matches = regex?.matches(in: self, options:[], range:NSMakeRange(0, self.count)) {
for match in matches {
arr_hasStrings.append(NSString(string: self).substring(with: NSRange(location:match.range.location, length: match.range.length )))
}
}
return arr_hasStrings
}
И если я сделаю let hashString = string.findMentionText()
, я получу [“@he”, “@super”, “@bat”]
Но то, что я хотел, было полное имя, как это ...
[“@he man”, “@super man”, “@bat man”]
Какое регулярное выражение мне нужно использовать для этого ..? Кроме того, как я могу получить идентификатор, связанный с каждым пользователем ..?
РЕДАКТИРОВАТЬ 1 ДОБАВЛЕНИЕ КАЖДОГО ЗНАЧЕНИЯ В Массив с использованием TYPEALIAS
Я объявил массив и typealias примерно так ...
typealias UserTag = (name: String, id: String)
var userTagList = [UserTag]()
А потом, добавил их в массив и распечатал каждую деталь так ...
let hashString2 = string.findMentionText2()
for unit in hashString2 {
let user: UserTag = (name: unit.first!, id: unit.last!)
userTagList.append(user)
}
//EACH DETAIL PRINTED HERE
for value in userTagList {
print(value.id)
print(value.name)
}