2013-06-25 1 views
12

문자 (예 : 'α')와 전체 유니 코드 이름 (예 : "GREEK SMALL LETTER ALPHA")을 양방향으로 변환하는 기능이 필요합니다.char를 전체 유니 코드 이름으로 변환하는 방법은 무엇입니까?

내가 직면 한 해결책은 공식 유니 코드 표준 (http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt)에서 조회를 수행하는 것입니다. 캐시 된 로컬 복사본에서 조회 성능을 향상시키기 위해 미리 적절한 컬렉션으로 변환 될 수 있습니다.

이러한 변환을 수행하는 간단한 방법이 있습니까? C#의 솔루션을 선호하지만 C#/.NET에 적용 할 수있는 다른 언어의 솔루션도 환영합니다. 감사!

+0

솔직히 말해서 나에게 맞는 솔루션은 훌륭합니다. 파일 형식은 비교적 단순 해 보이며 프레임 워크에 다른 것이 있다고 생각하지 않습니다. –

+0

당신이 가리키는 링크는 첫 번째 백만과 비슷하며 쉽게 사전에 적합해야합니다. 캐릭터는 고유해야 사전에 키로 사용할 수 있습니다. 설명에 관해서는 - 고유 한 경우 속도에 대한 두 번째 역방향 사전을 포함 할 수 있지만 메모리를 두 배로 늘릴 수 있습니다. – Paparazzi

+0

@Blam은 "처음 100 만 개만 좋아"(더 정확하게는 1114109) ** 모두 **입니다. –

답변

0

유니 코드 이름 테이블을 메모리에 보관하지 않으려면 유니 코드 값에 최대 유니 코드 길이 이름을 곱한 값의 유니 코드 이름을 가리키는 텍스트 파일 만 준비하면됩니다. 최대 4 바이트 길이의 경우 몇 메가 바이트보다 크지는 않습니다. 보다 컴팩트 한 구현을 원한다면 unicode 값으로 인덱싱 된 파일의 시작 부분에 유니 코드 이름에 파일의 오프셋 주소를 그룹화 한 다음 더 컴팩트 한 이름 테이블을 사용하십시오. 하지만 어려운 것은 아니지만 그러한 파일을 준비해야합니다.

+0

요구 사항은 양방향입니다. – Paparazzi

+0

네, 쓰고 있습니다. 우리는 유니 코드 이름의 해시 값과 동일한 indice를 가진 또 다른 파일을 만들 수 있습니다 :-). 댓글에 언급 된 솔루션은 준비된 사전 라이브러리를 사용하지만 처음부터 자전거를 만드는 것보다 낫습니다. 그러나 나는 항상 데이터 구조 디자인의 예술을 즐긴다. –

관련 문제