2011-04-07 2 views
2

.NET/C#에서 맞춤 알파벳 순서에 따라 List<string>을 정렬하는 방법이 있습니까? 나는 다음과 같은 순서로 정렬 할사용자 지정 정렬 순서

{ "badum", "śiram", "ðaur", "hor", "áltar", "aun" } 

: 사용자 정의 알파벳 순서에 의해

{ "áltar", "aun", "badum", "śiram", "hor", "ðaur" } 

, 나는 내가 constructed language에서 일하고 있어요 의미

나는 단어의 목록을 가지고 다음과 같은 알파벳으로 표시됩니다 : ABZTMIGJLNKSOŚPRFUHDVE..ÞY. Java에서 발견 된 RuleBasedCollator의 C# 구현은 완벽 할 것입니다! 그런 것이 없다면 커스텀 알고리즘을 작성하는데있어 약간의 조언이있을 것이다.

미리 감사드립니다. (분명 그냥 일반 문자열 비교를 수행 위)

List<string> foo = new List<string>(); 
foo.Sort((a, b) => a.CompareTo(b)); 

이것은 당신이 사용하고자하는 기준에 따라 장소에 목록을 정렬됩니다

+0

커스텀'StringComparer'를 작성하는 것이 최선의 선택이라고 생각합니다. –

답변

3

필자는 확실히 RuleBasedCollator를 만드는 것으로 시작합니다. 원하는 규칙을 파악하는 것이 더 어려운 작업 중 하나입니다.

.net bindings over icu을 제공하는 프로젝트가 있습니다.

귀하의 요구 사항을 충족하지 못하고 직접 작성하기로 결정한 경우 Unicode Collation Algorithm은 좋은 자료입니다. 자연 언어 정렬은 개념적으로 (많은 최적화가 가능하지만) 특이성이 증가하는 별도의 전달을 포함한다는 점을 명심하십시오. 첫 번째 패스는 차이점이없고 두 문자열의 기본 단위 수가 같은 경우 소위 기본 구분 (대소 문자 구분 및 특정 발음 구별 부호 및 문장 부호 제외)을 찾은 다음 두 번째 패스를 만들 수 있습니다. 시간 차이는 고려해야한다. 다음으로 대소 문자 구별과 마지막 구두점 구분을 처리합니다.

+0

감사합니다. 게시 한 링크가 충분히 유용했습니다! – Minustar