regular expression을 이용해서 해시태그를 가져오는 메소드가 이모지가 있는 텍스트에서 제대로 동작하지 않는다.

NSRegularExpression을 사용하기 위해서는 NSString으로 형변환해야 하는데 NSRange에 문자열 길이를 NSString의 length가 아니라 String의 count로 넘겨주고 있었다.

 

NSString과 String은 유니코드에 대한 동작 방식이 달라서 반환하는 문자열 길이가 다르다. String은 Extended Grapheme Clusters 사용해서 이모지 하나를 문자 한개로 계산하고 NSString은 이모지 하나를 유니코드 문자 두개로 계산하기 때문이다.

(뒤늦게 깨닫기 있기?)

 

p (textView.text as NSString).length // print 6

p textView.text.count // print 2

 

NSString의 length를 인자로 넘기도록 수정하면 이슈 해결!! 개발할 때 주의하자... 

+ Recent posts