在 Swift 中,如何检测 "emoji tag"?
In Swift, how can I detect an "emoji tag"?
func getEmojiTags(text: String) -> [String] {
}
表情符号标签是两部分的组合,它们之间没有 spaces。如果它们之间有一个space,那么它就不是一个emojiTag。
- 作为表情符号的字符
- 字符串不是表情符号
例如:
Hello, my name is Jason how are you ?-> []
Hello, my name is Jason -> [Jason]
Hello, my name is Jason -> []
I am going to the ⛱beach with some monkeys -> [⛱beach, monkeys]
尝试使用 NSRegularExpression
和表情符号代码范围。
func emojiTags(str: String) -> [String] {
//A little bit simplified, you may need to define what are your "emoji".
//This is a subset defined in .
let emojiCharacters = "\U0001F600-\U0001F64F\U0001F300-\U0001F5FF\U0001F680-\U0001F6FF\u2600-\u26FF"
let pattern = "[\(emojiCharacters)][^\(emojiCharacters)\s]+"
let regex = try! NSRegularExpression(pattern: pattern, options: [])
let matches = regex.matchesInString(str, options: [], range: NSRange(0..<str.utf16.count))
return matches.map{(str as NSString).substringWithRange([=10=].range)}
}
let str1 = "Hello, my name is Jason how are you ?"
print(emojiTags(str1)) //->[]
let str2 = "Hello, my name is Jason"
print(emojiTags(str2)) //->["Jason"]
let str3 = "Hello, my name is Jason"
print(emojiTags(str3)) //->[]
let str4 = "I am going to the ⛱beach with some monkeys "
print(emojiTags(str4)) //->["⛱beach", "monkeys"]
func getEmojiTags(text: String) -> [String] {
}
表情符号标签是两部分的组合,它们之间没有 spaces。如果它们之间有一个space,那么它就不是一个emojiTag。
- 作为表情符号的字符
- 字符串不是表情符号
例如:
Hello, my name is Jason how are you ?-> []
Hello, my name is Jason -> [Jason]
Hello, my name is Jason -> []
I am going to the ⛱beach with some monkeys -> [⛱beach, monkeys]
尝试使用 NSRegularExpression
和表情符号代码范围。
func emojiTags(str: String) -> [String] {
//A little bit simplified, you may need to define what are your "emoji".
//This is a subset defined in .
let emojiCharacters = "\U0001F600-\U0001F64F\U0001F300-\U0001F5FF\U0001F680-\U0001F6FF\u2600-\u26FF"
let pattern = "[\(emojiCharacters)][^\(emojiCharacters)\s]+"
let regex = try! NSRegularExpression(pattern: pattern, options: [])
let matches = regex.matchesInString(str, options: [], range: NSRange(0..<str.utf16.count))
return matches.map{(str as NSString).substringWithRange([=10=].range)}
}
let str1 = "Hello, my name is Jason how are you ?"
print(emojiTags(str1)) //->[]
let str2 = "Hello, my name is Jason"
print(emojiTags(str2)) //->["Jason"]
let str3 = "Hello, my name is Jason"
print(emojiTags(str3)) //->[]
let str4 = "I am going to the ⛱beach with some monkeys "
print(emojiTags(str4)) //->["⛱beach", "monkeys"]