問題:
我有一個給定的字串=“你好@用戶名和你好@全名,這有效”
期望的輸出: = ["@User Name, @Full Name"]
我在 Swift 中的代碼:
let commentString = "Hello @User Name and hello again @Full Name and this works"
let words = commentString.components(separatedBy: " ")
let mentionQuery = "@"
for word in words.filter({ $0.hasPrefix(mentionQuery) }) {
print(word) = prints out each single name word "@User" and "@Full"
}
試試這個:
if words.filter({ $0.hasPrefix(mentionQuery) }).isNotEmpty {
print(words) ["Hello", "@User", "Name".. etc.]
}
我被困在如何獲取全名 = ["@User Name", "@Full Name"] 的字串陣列
你知道怎么做嗎?
uj5u.com熱心網友回復:
首先,.filter意味著檢查陣列中的每個值,您給出的條件是什么,如果為真,則取值 - 這不適合這里。
對于這個問題,它可以分為兩個任務:用“”將字串分隔成子字串(你已經完成了);并結合2個以前綴“@”開頭的子字串
代碼將是這樣的
let commentString = "Hello @User Name and hello again @Full Name"
let words = commentString.components(separatedBy: " ")
let mentionQuery = "@"
var result : [String] = []
var i = 0
while i < words.count {
if words[i].hasPrefix(mentionQuery) {
result.append(words[i] " " words[i 1])
i = 2
continue
}
i = 1
}
結果
print("result: ", result) // ["@User Name", "@Full Name"]
uj5u.com熱心網友回復:
您也可以使用filter,如下所示:
let str = "Hello @User Name and hello again @Full Name"
let res = str.components(separatedBy: " ").filter({$0.hasPrefix("@")})
print(res)
// ["@User", "@Full"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505868.html
上一篇:查找陣列中的重復項
