한자, 한문, 일본어 등이 포함된 문자열을 처리하고 싶을 때 사용 가능합니다.
사이트에는 16진수로 되어 있으나 전 10진수로 바꿔서 사용했습니다.
* 전체 유니코드 영역 목록
https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%EC%98%81%EC%97%AD
* 코드
* 참조 관리자 -> COM -> 'Hanja Dictionary Type Library 1.0' 추가
ushort usr;
string str = "近者說遠者來";
MSHJDICLib.HanjaDic hjd = new MSHJDICLib.HanjaDic();
hjd.OpenMainDic();
for (int j = 0; j < str.Length; j++)
{
us = isCheck(str.Substring(j, 1));
if (usr != 0)
{
str = str.Replace(str.Substring(j, 1), " ");
}
}
private ushort isCheck(string str)
{
ushort usr = BitConverter.ToUInt16(Encoding.Unicode.GetBytes(str), 0);
//한자, 일본어 유니코드 범위
//16진수 -> 10진수로 변환 후 사용
if ((us >= 13312 && us <= 19903) || //한중일 통합 한자 확장 A
(us >= 19968 && us <= 40895) || //한중일 통합 한자
(us >= 63744 && us <= 64255) || //한중일 호환용 한자
(us >= 12352 && us <= 12447) || //히라가나
(us >= 12448 && us <= 12543)) //카타카나
{
return us;
}
else
{
return 0;
}
}
- 해당 문자를 16비트로 바꾸어 범위 안에 포함되는지 확인하고 있으면 공백으로 처리하는 방식입니다.
예제는 크게 의미 없는 공백으로 처리하였으나 해당 문자를 위에서 선언된 HanjaDic에서 제공하는 메서드 중 GetHanjaSense(한자 뜻), HanjaToHangul(한자 음) 등으로 추가하여 사용할 수 있습니다.
위 사이트에서 원하는 범위를 확인하여 정규식으로 만들면 보다 간결하게 사용 가능할 듯합니다.
이상입니다.
'컴퓨터 > c#' 카테고리의 다른 글
C#으로 PDF 제어하기 3 (PDF에서 내용 찾기) (0) | 2021.05.21 |
---|---|
C#으로 PDF 제어하기 2 (PDF Merge, PDF 병합, PDF 합치기) (0) | 2021.05.21 |
C#으로 PDF 제어하기 (PDF 불러와서 원하는 페이지 저장) (0) | 2021.04.23 |
c# 단일 실행 파일로 컴파일하기 (ILMerge, Fody) (4) | 2021.01.22 |
C# XML POST 전송과 응답, 파싱 예제 등 (0) | 2020.12.03 |