2016-08-11 4 views
0
func getEmojiTags(text: String) -> [String] { 
} 

그림 이모티콘 태그는 공백없이 두 부분의 조합입니다. 그들 사이에 공백이 있으면 그것은 emojiTag가 아닙니다.Swift에서 "이모티콘 태그"를 어떻게 검색 할 수 있습니까?

  • 그림 이모티콘을
  • 하지 그림 이모티콘을 예를 들어

인 문자열입니다 문자 :

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] 
+2

스위프트가 유니 코드를 올바르게 처리하면 단일 문자로 처리해야하므로 몇 문자 범위 중 하나인지 확인할 수 있습니다. – Blender

+1

@Blender 그래서, 범위는 무엇입니까? 제 생각에 질문은 이것에 관한 것입니다 –

+0

@MehdiKhademloo : 그래서 제가 답변이 아닌 코멘트를 올렸습니다. 그들은 찾기가 어렵지 않아야합니다. – Blender

답변

1

이모티콘 코드 범위와 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 http://stackoverflow.com/a/36258684/6541007 . 
    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($0.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"] 
+0

이모티콘이 모두 감지됩니까? 모든 그림 이모티콘을 어떻게 검색 할 수 있습니까? – TIMEX

+0

@TIMEX, "emoji"에는 명확하고 일반적인 정의가 없습니다. 앱에서 이모티콘으로 처리 할 문자를 정의해야합니다. – OOPer

+0

@TIMEX, [This UTR # 51] (http://unicode.org/reports/tr51/)는 emoji_로 간주되는 문자를 지정하는 _data를 제공하려고합니다. – OOPer

관련 문제