I have a question of splite the String.
And I try to write a function in playground and test it's runtime.
I don't know whether have another better function of splite string or not.
Have any idea to suggest me?
Thanks.
func spliteMessage() -> String {
let startTime = CACurrentMediaTime()
print("--> StartTime: \(startTime)")
let str:String = "<a href=\"url://app/user/5a4defba4d092f3f00e0fdb1\">@user1 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fdb2\">@user2 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fdb3\">@user3 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fdb4\">@user4 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fdb5\">@user5 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fdb6\">@user6 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fdb7\">@user7 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fdb8\">@user8 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fdb9\">@user9 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fd10\">@user10 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fd11\">@user11 </a><a href=\"url://app/user/5a4defba4d092f3f00e0fd12\">@user12 </a> Have a nice day!"
let fullArr = str.components(separatedBy: "</a>")
var finalArray = [[String:String]]()
var commonMessage:String = ""
var taggedMessage:String = ""
fullArr.forEach { (string) in
if string.hasPrefix("<a href=\"url://app/user/") {
var a = string.replacingOccurrences(of: "<a href=\"url://app/user/", with: "")
var userId = (a as NSString).substring(to: 24)
var name = (a as NSString).substring(from: 26)
finalArray.append([userId:name])
}else{
commonMessage = string
}
}
finalArray.forEach { (dic) in
dic.forEach({ (id,name) in
taggedMessage += name
})
}
let finalmsg = taggedMessage + commonMessage
print("--> finalmsg: \(finalmsg)")
let endTime = CACurrentMediaTime()
print("--> EndTime: \(endTime)")
print("--> Time: \(endTime - startTime)")
return finalmsg
}
final print:
--> StartTime: 22153.978737749
--> finalmsg: @user1 @user2 @user3 @user4 @user5 @user6 @user7 @user8 @user9 @user10 @user11 @user12 Have a nice day!
--> EndTime: 22154.030463062
--> Time: 0.0517253129983146
Update:
//change finalArray type to dictionary.
finalArray = [String:String]()
finalArray.forEach({ (id,name) in
taggedMessage += name
}