エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

iOS NSStringで絵文字を含んでいるかを判定

こちらから、絵文字のNSCharacterSet+EmojisAdditionカテゴリを使わせてもらった。

#import "NSString+isContainAddition.h"

#import "NSCharacterSet+EmojisAddition.h"

@implementation NSString (isContainAddition)

- (BOOL)isContainEmoji
{
    NSCharacterSet *emojiSet = [NSCharacterSet emojiCharacterSet];
    return ([self rangeOfCharacterFromSet:emojiSet].location != NSNotFound) ? YES : NO;
}

- (BOOL)isContainCharacterString:(NSString *)str
{
    NSString *specialCharacterString = str;
    NSCharacterSet *specialCharacterSet = [NSCharacterSet
                                           characterSetWithCharactersInString:specialCharacterString];
    return ([self rangeOfCharacterFromSet:specialCharacterSet].location != NSNotFound) ? YES : NO;
}

@end

おまけとして、isContainCharacterString:という判定したい文字を入れた文字列を渡して含んでいるか見るメソッドも作った。

使用

NSLog(@"ss  abcde : %@", @([@"ss" isContainCharacterString:@"abcde"]));
NSLog(@"ssc abcde : %@", @([@"ssc" isContainCharacterString:@"abcde"]));
NSLog(@"ssC abcde : %@", @([@"ssC" isContainCharacterString:@"abcde"]));
NSLog(@"888  9654 : %@", @([@"888" isContainCharacterString:@"9654"]));
NSLog(@"4    9654 : %@", @([@"4" isContainCharacterString:@"9654"]));

結果

ss  abcde : 0
ssc abcde : 1
ssC abcde : 0
888  9654 : 0
4    9654 : 1

まあ、正規表現を使わなくても良い簡単な判定で使えるかな。