C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[71874] Re:Re:Re:Re:[질문] ㄱ으로 시작되는 문자열찾기
하안인 [hurco] 4032 읽음    2014-10-15 16:17
감사합니다.

빌더초보 님이 쓰신 글 :
: 빌더 6.0 의 String은 char 형인가 보네요.
: char형은 EUC-KR 코드 를 사용 한다네요.
: http://ko.wikipedia.org/wiki/KS_X_1001_%ED%95%9C%EA%B8%80_%EB%B6%80%EB%B6%84_%ED%91%9C
:
: 	char *c = Edit1->Text.SubString(1,1).c_str();
: 
: 	unsigned short w=(unsigned char)c[0];
: 
: 	w = w << 8;
: 	w = w + (unsigned char)c[1];
: 
: 	if ( w== 0xA4A1 || 0xB0A0 <= w && w < 0xB1EE) {
: 		ShowMessage("ㄱ");
: 	}
: 

:
: 0xA4A1 이 'ㄱ'에 대한 값이고
: 0xB0A0 ~ 0xB1ED 가 'ㄱ'으로 시작하는 모든 음절에 대한 값입니다.
:
: 빌더 6.0이 없어서 테스트는 못해봤지만
: 아마 될겁니다.
:
: 하안인 님이 쓰신 글 :
: : 제가 빌더6.0을 사용하고 있는데요.
: :   w_str() 은 없는데요.
: :   c_str() 로 바꿔서 해 보았는데  해당 루틴으로 적용이 안되서...
: :
: :    unsigned sort w;
: :    String s1,s3;
: :     s3 = "";
: :      s1 = ss.SubString(1,n-1);
: :     w = *s1.SubString(1,1).c_str();
: :     if( w == 0x3131 || (0xAC00 <= w && w < 0xAC00+0x24c))
: :     {
: :      c++;
: :      //port[chan].pos++;
: :      s3 += s1;
: :     }
: :     else
: :     {
: :     }
: :
: :
: : 빌더초보 님이 쓰신 글 :
: : : 한글 자모 코드 표 링크
: : : http://www.unicode.org/charts/PDF/U1100.pdf
: : :
: : : 한글 음절 코드 표 링크
: : : http://www.unicode.org/charts/PDF/UAC00.pdf
: : :
: : :
	unsigned short w = *Edit1->Text.SubString(1,1).w_str();
: : : 
: : : 	if (w == 0x3131 || (0xAC00 <= w && w < 0xAC00+0x24C)) {
: : : 		ShowMessage((wchar_t)0x3131);
: : : 	}

: : :
: : : 링크 참조하셔서 위처럼 코드 범위로 구분하시면 됩니다.
: : :
: : : 근데 자모코드 표에는 ㄱ이 1100 이라고 나와 있는데, 실제로는 3131 이더군요.
: : : 컴파일러의 유니코드 버전차이(?) 인것같은데 자세히는 모르겠네요.
: : :
: : : 폼에 TEdit 를 두개 올리시고 Edit1Change에 아래와 같이 쓰고 테스트 해보세요.
: : :
void __fastcall TForm1::Edit1Change(TObject *Sender)
: : : {
: : : 	wchar_t *w=Edit1->Text.w_str();
: : : 	Edit2->Text="";
: : : 	for (int i = 0; i < Edit1->Text.Length(); i++) {
: : : 		Edit2->Text=Edit2->Text+", "+IntToHex((unsigned short)w[i],4);
: : : 	}
: : : }

: : :
: : : 24C의 의미는... 전체를 다 확인해 본것은 아닌데 하나의 자음에 할당되는 음절의 갯수는 24C 개 더군요.
: : : 아마 조합할수 있는 모든 경우의 수가 24C 개 인가 봅니다. 아닐수도 있고요 ㅎㅎ;
: : :
: : : 그럼..
: : :
: : :
: : :
: : :
: : :
: : :
: : :
: : :
: : : 하안인 님이 쓰신 글 :
: : : :
: : : : 기린, 미역, 기사, 등등
: : : :
: : : : 의 문자열이 있을 경우 ㄱ 으로 시작되는 문자열을 찾으려면 어떻게 해야 하나요.
: : : :
: : : : 한문자이면 문자열 검색으로 하면 되는데 ....

+ -

관련 글 리스트
71869 [질문] ㄱ으로 시작되는 문자열찾기 하안인 3733 2014/10/15
71878     Re:[질문] ㄱ으로 시작되는 문자열찾기 방태윤 3801 2014/10/16
71870     Re:[질문] ㄱ으로 시작되는 문자열찾기 빌더초보 4068 2014/10/15
71871         Re:Re:[질문] ㄱ으로 시작되는 문자열찾기 하안인 3896 2014/10/15
71873             Re:Re:Re:[질문] ㄱ으로 시작되는 문자열찾기 빌더초보 4084 2014/10/15
71874                 Re:Re:Re:Re:[질문] ㄱ으로 시작되는 문자열찾기 하안인 4032 2014/10/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.