검색결과 리스트
chosung에 해당되는 글 1건
- 2011.09.10 [iOS] 아이폰 초성 검색 클래스를 만들어 보자
글
출처 : ㅠㅠ 잊어버렸습니다.
인터넷에서 유니코드 한글 위치와 초성 중성 종성을 찾는 알고리즘을 찾았는데 브라우져를 꺼버렸네요 ㅠㅠ
암튼 위의 이미지를 참조해서 아이폰에서 사용할 요량으로 만들어 봤습니다.
알고리즘에 오타 문제가 있습니다.
초성부분에 int((strCode - 0xAC00) / 28 * 21) 이라고 했는데 "28*21" 부분을 "(28*21)" 괄호로 묶어줘야 합니다.
//ChosungUtil.h
//ChosungUtil.m
//사용방법
인터넷에서 유니코드 한글 위치와 초성 중성 종성을 찾는 알고리즘을 찾았는데 브라우져를 꺼버렸네요 ㅠㅠ
암튼 위의 이미지를 참조해서 아이폰에서 사용할 요량으로 만들어 봤습니다.
알고리즘에 오타 문제가 있습니다.
초성부분에 int((strCode - 0xAC00) / 28 * 21) 이라고 했는데 "28*21" 부분을 "(28*21)" 괄호로 묶어줘야 합니다.
//ChosungUtil.h
#define HANGUL_START_CODE 0xAC00
#define HANGUL_END_CODE 0xD79F
@interface ChosungUtil : NSObject
{
NSArray *chosung;
NSArray *jungsung;
NSArray *jongsung;
}
@property (nonatomic, retain) NSArray *chosung;
@property (nonatomic, retain) NSArray *jungsung;
@property (nonatomic, retain) NSArray *jongsung;
// 입력문자열를 초성과 비교해서 NSComparisonResult를 반환한다.
- (NSComparisonResult) compare:(NSString *)source withChoungString:(NSString *)search;
// 입력문자열을 초성으로 변환시킨다.
- (NSString*) stringChosung:(NSString *) source;
@end
//ChosungUtil.m
#import "ChosungUtil.h"
@implementation ChosungUtil
@synthesize chosung, jungsung, jongsung;
- (NSComparisonResult) compare:(NSString *)source withChoungString:(NSString *)search
{
return [[self stringChosung:source] compare:search];
}
- (NSString*) stringChosung:(NSString *) source
{
NSMutableString *result = [NSMutableString string];
for (NSUInteger i = 0; i < [source length]; i++) {
NSInteger unicodeChar = [source characterAtIndex:i];
// 한글인지 검색
if ( HANGUL_START_CODE <= unicodeChar && unicodeChar <= HANGUL_END_CODE )
{
NSInteger chosungIndex = (NSInteger)((unicodeChar - HANGUL_START_CODE) / (28*21));
// 중성, 종성은 현재 필요없다.
// NSInteger jungsungIndex = (NSInteger)((unicodeChar - HANGUL_START_CODE) % (28*21) / 28);
// NSInteger jongsungIndex = (NSInteger)((unicodeChar - HANGUL_START_CODE) % 28);
[result appendFormat:@"%@", [chosung objectAtIndex:chosungIndex]];
}
}
return result;
}
-(id)init
{
self = [super init];
if ( self != nil )
{
// 초기화
chosung = [[NSArray arrayWithObjects:
@"ㄱ",@"ㄲ",@"ㄴ",@"ㄷ",@"ㄸ",@"ㄹ",@"ㅁ",
@"ㅂ",@"ㅃ",@"ㅅ",@"ㅆ",@"ㅇ",@"ㅈ",@"ㅉ",
@"ㅊ",@"ㅋ",@"ㅌ",@"ㅍ",@"ㅎ",nil] retain];
jungsung = [[NSArray arrayWithObjects:
@"ㅏ",@"ㅐ",@"ㅑ",@"ㅒ",@"ㅓ",@"ㅔ",
@"ㅕ",@"ㅖ",@"ㅗ",@"ㅘ",@"ㅙ",@"ㅚ",
@"ㅛ",@"ㅜ",@"ㅝ",@"ㅞ",@"ㅟ",@"ㅠ",
@"ㅡ",@"ㅢ",@"ㅣ",nil] retain];
jongsung = [[NSArray arrayWithObjects:
@"",@"ㄱ",@"ㄲ",@"ㄳ",@"ㄴ",@"ㄵ",@"ㄶ",
@"ㄷ",@"ㄹ",@"ㄺ",@"ㄻ",@"ㄼ",@"ㄽ",@"ㄾ",
@"ㄿ",@"ㅀ",@"ㅁ",@"ㅂ",@"ㅄ",@"ㅅ",@"ㅆ",
@"ㅇ",@"ㅈ",@"ㅊ",@"ㅋ",@" ㅌ",@"ㅍ",@"ㅎ",nil] retain];
}
return self;
}
-(void)dealloc
{
[chosung release];
[jungsung release];
[jongsung release];
[super dealloc];
}
@end
//사용방법
-(IBAction)clickedButton:(id)sender
{
NSLog(@"%@", hangulField.text);
ChosungUtil *util = [[[ChosungUtil alloc] init] autorelease];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"변환결과"
message:[util stringChosung:hangulField.text]
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"닫기", nil];
[alert show];
[alert release];
}
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[Xcode] XCode4 Release, Debug 전환 (0) | 2011.09.12 |
---|---|
[iOS] iOS에서는 보안상의 이유로 dynamic library Project를 만들수 없습니다. (0) | 2011.09.12 |
[iOS] Objective-C Singleton 만들기 (2) | 2011.09.04 |
[iOS] iOS5 Beta 7에서는 Window-Based Application가 없어졌습니다. (0) | 2011.09.04 |
[iOS] UIButton의 alpha 값에 따른 이벤트 유무 (0) | 2011.08.16 |
RECENT COMMENT