서치바에 초성 검색 기능을 넣을려고 자료를 찾다 보니
초성검색
핸드폰에서 전화번호를 검색할때 많이 사용하는 기능이다.
타이핑수를 1/2 ~ 1/3로 줄여준다.
않아도 누군가에게 이름을 들었는데 잘못들은 부분이 초성이었는지 중성 또는 종성 부분이었는지 생각해보면 쉽게 알수 있다. 따라서 정확하게 알지
못하는검색어로 내가 원하는 결과를 얻고자 할때도 초성검색은 유용하게 쓰일수 있다.
입력해둘 필요가 있다. 그렇지 않으면 매 검색마다 기존 데이타의 초성값을 계산해야 할것이다. 두번째 작업은 사소한 것인데 한글자판에서 'ㄱ',
'ㅅ'을 연속으로 입력해보면 'ㄳ'값이 입력된다. 이건 유효하지 않은 초성이다. 'ㄳ'은 종성값이지 초성값이 아니므로 이런값이 입력되지 않도록
만들어주어야 한다. 'ㄳ'을 내부적으로 'ㄱㅅ'으로 바꾸어주던지 아예 'ㄳ'값이 입력되는 것을 막아도 된다. 물론 'ㄱ'을 입력하고 옆으로
이동해서 'ㅅ'을 입력하는 방법으로 해결해도 되지만 사용자 인터페이스가 후지게 된다. 또한 타이핑도 늘어난다
- (NSString *)GetUTF8String:(NSString *)hanggulString {
NSArray *chosung = [[NSArray alloc]initWithObjects:@"ㄱ",@"ㄲ",@"ㄴ",@"ㄷ",@"ㄸ",@"ㄹ",@"ㅁ",@"ㅂ",@"ㅃ",@"ㅅ",@"ㅆ",@"ㅇ",@"ㅈ",@"ㅉ",@"ㅊ",@"ㅋ",@"ㅌ",@"ㅍ",@"ㅎ",nil];
NSArray *jungsung = [[NSArray alloc]initWithObjects:@"ㅏ",@"ㅐ",@"ㅑ",@"ㅒ",@"ㅓ",@"ㅔ",@"ㅕ",@"ㅖ",@"ㅗ",@"ㅘ",@"ㅙ",@"ㅚ",@"ㅛ",@"ㅜ",@"ㅝ",@"ㅞ",@"ㅟ",@"ㅠ",@"ㅡ",@"ㅢ",@"ㅣ",nil];
NSArray *jongsung = [[NSArray alloc]initWithObjects:@"",@"ㄱ",@"ㄲ",@"ㄳ",@"ㄴ",@"ㄵ",@"ㄶ",@"ㄷ",@"ㄹ",@"ㄺ",@"ㄻ",@"ㄼ",@"ㄽ",@"ㄾ",@"ㄿ",@"ㅀ",@"ㅁ",@"ㅂ",@"ㅄ",@"ㅅ",@"ㅆ",@"ㅇ",@"ㅈ",@"ㅊ",@"ㅋ",@" ㅌ",@"ㅍ",@"ㅎ",nil];
NSString *textResult = @"";
for (int i=0;i<[hanggulString length];i++) {
NSInteger code = [hanggulString characterAtIndex:i];
if (code >= 44032 && code <= 55203) {
NSInteger uniCode = code - 44032;
NSInteger chosungIndex = uniCode / 21 / 28;
NSInteger jungsungIndex = uniCode % (21 * 28) / 28;
NSInteger jongsungIndex = uniCode % 28;
textResult = [NSString stringWithFormat:@"%@%@%@%@", textResult, [chosungobjectAtIndex:chosungIndex], [jungsung objectAtIndex:jungsungIndex], [jongsung objectAtIndex:jongsungIndex]];
}
}
return textResult;
}
- (void)loadView {
[super loadView];
NSLog( @"%@", [self GetUTF8String:@"투덜이"]);
}
'개발 > iOS' 카테고리의 다른 글
UILabel copyWithZone 오류 (1) | 2012.04.02 |
---|---|
[IB없이 개발하기] UITextField 글자수 제한하기 (0) | 2011.06.23 |
Xcode 와 SVN (0) | 2011.06.21 |
[IB없이 개발하기] 아이폰 문자열 대체하기 stringByReplacingOccurrencesOfString (0) | 2011.06.01 |
개발용 컴퓨터와 아이폰 준비하기 (0) | 2010.07.22 |