이번에 음절 비교를 위해서 만든 것
종성이 아에 없을때를 고려 안하고 만든 점이 있긴한데
로직에선 없으면 없는대로 비교하는 관계로 그냥 사용
@interface NSString (Sound)
/**
*@brief 첫글자의 초성을 반환하는 함수
*@return NSString 첫글자의 초성
*/
-(NSString*)getChoSeong;
/**
*@brief 첫글자의 중성을 반환하는 함수
*@return NSString 첫글자의 중성
*/
-(NSString*)getJungSeong;
/**
*@brief 첫글자의 종성을 반환하는 함수
*@return NSString 첫글자의 종성
*/
-(NSString*)getJongSeong;
typedef enum sound{CHO=1,JUNG,JONG}SOUND; ///< 초,중,종을 구분하기 위한 enumerator
@end
@implementation NSString (Sound)
- (NSString *)getChoSeong
{
NSArray* choSeong = [[NSArray alloc] initWithObjects:@"ㄱ",@"ㄲ",@"ㄴ",@"ㄷ",@"ㄸ",@"ㄹ",@"ㅁ",@"ㅂ",@"ㅃ",@"ㅅ",@"ㅆ",@"ㅇ",@"ㅈ",@"ㅉ",@"ㅊ",@"ㅋ",@"ㅌ",@"ㅍ",@"ㅎ",nil];
NSInteger code = [self characterAtIndex:0];
return choSeong[[self getSoundIndexWithUniCode:code withSound:CHO]];
}
-(NSString *)getJungSeong
{
NSArray* jungSeong = [[NSArray alloc] initWithObjects:@"ㅏ",@"ㅐ",@"ㅑ",@"ㅒ",@"ㅓ",@"ㅔ",@"ㅕ",@"ㅖ",@"ㅗ",@"ㅘ",@"ㅙ",@"ㅚ",@"ㅛ",@"ㅜ",@"ㅝ",@"ㅞ",@"ㅟ",@"ㅠ",@"ㅡ",@"ㅢ",@"ㅣ",nil];
NSInteger code = [self characterAtIndex:0];
return jungSeong[[self getSoundIndexWithUniCode:code withSound:JUNG]];
}
-(NSString *)getJongSeong
{
NSArray* jongSeong = [[NSArray alloc] initWithObjects:@"",@"ㄱ",@"ㄲ",@"ㄳ",@"ㄴ",@"ㄵ",@"ㄶ",@"ㄷ",@"ㄹ",@"ㄺ",@"ㄻ",@"ㄼ",@"ㄽ",@"ㄾ",@"ㄿ",@"ㅀ",@"ㅁ",@"ㅂ",@"ㅄ",@"ㅅ",@"ㅆ",@"ㅇ",@"ㅈ",@"ㅊ",@"ㅋ",@" ㅌ",@"ㅍ",@"ㅎ",nil];
NSInteger code = [self characterAtIndex:0];
return jongSeong[[self getSoundIndexWithUniCode:code withSound:JONG]];
}
/**
*@brief 유니코드를 기반으로 초, 중, 종성의 index값을 얻는 함수, array에서 실제 값을 얻기 위함
*@param unicode 해당 글자의 unicode값
*@param sound 얻고 싶은 글자가 초, 중, 종성인지 판단하는 변수
*@return NSInteger 초, 중, 종성을 가져오기 위한 index값
*/
-(NSInteger) getSoundIndexWithUniCode : (NSInteger) unicode withSound:(SOUND)sound
{
if (unicode < 44032 && unicode > 55203)
{
// NSLog(@"한글이 아닙니다.");
return 999;
}
NSInteger uniCode = unicode - 44032;
NSInteger soundIndex;
switch (sound) {
case CHO:
soundIndex = uniCode / 21 / 28;
break;
case JUNG:
soundIndex = uniCode % (21 * 28) / 28;
break;
case JONG:
soundIndex = uniCode % 28;
break;
default:
soundIndex = uniCode / 21 / 28;
break;
}
return soundIndex;
}
@end
'프로그래밍 > iOS' 카테고리의 다른 글
[iOS] facebook 로그인 버튼 붙이기 (0) | 2017.03.27 |
---|---|
[iOS] 숫자에 천단위 구분자(,) 넣어주기 (0) | 2017.03.03 |
[iOS] NSString이 한글인지 아닌지 판별 (0) | 2017.01.25 |
[iOS] slicing (0) | 2016.11.29 |
[iOS] bitcode (0) | 2016.11.29 |