본문 바로가기
Delphi/프로시저-함수

한글 자음 모음 분리

by MonoSoft 2024. 5. 10.
728x90
반응형

한글 자음 모음 분리

728x90

 

 

 

 

const

HanBase = $AC00; //유니코드 3.0 에서의 시작 한글영역

HanLast = $D7AF; //유니코드 3.0 에서의 마지막 한글영역

ChoSungStr:WideString = 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ';

JungSungStr:WideString = 'ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ';

JongSungStr:WideString = ' ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ';

 

function JamoSplit(const Han: WideChar):WideString;

var

UniCode: Integer;

ChoSung, JungSung, JongSung: Integer;

begin

Result := '';

for UniCode := 1 to Length(ChoSungStr) do

begin

if ChoSungStr[UniCode] = Han then

begin

Result := Han;

Exit;

end;

end;

for UniCode := 1 to Length(JungSungStr) do

begin

if JungSungStr[UniCode] = Han then

begin

Result := 'ㅇ' + Han;

Exit;

end;

end;

 

UniCode := Integer(Han);

if (UniCode < HanBase) or (UniCode > HanLast) then Exit;

UniCode := UniCode - HanBase;

ChoSung := UniCode div (21 * 28);

UniCode := UniCode mod (21 * 28);

JungSung := UniCode div 28;

UniCode := UniCode mod 28;

JongSung := UniCode;

SetLength(Result, 3);

Result[1] := ChoSungStr[ChoSung+1];

Result[2] := JungSungStr[JungSung+1];

Result[3] := JongSungStr[JongSung+1];

end;

 

728x90
반응형

댓글