카테고리 클래스
텍스트 처리에 대해 깊이 파고들 때마다 문자의 풍부한 범주화가 필요하게 됩니다. 여기에는 모든 종류의 이유가 있습니다. 문자열 유효성 검사에는 암호와 같은 다양한 요구 사항이 포함됩니다. 특정 토큰, 때로는 특정 주문에서 특정 문자만 허용되는 소스 코드를 구문 분석합니다. 문자열의 양쪽 끝에서 문자 집합을 자릅니다. 기타 "공백"은 범주입니다. 단,
UnicodeCategory
값 중 하나가 아닙니다. 모든 구분 기호 범주의 조합으로 생각하고 싶을 수 있지만 사실이 아닙니다. 그리고 문자 집합을 직접 정의할 수 있지만 이것은 엄청나게 지루하고 오류가 발생하기 쉽습니다. 심각하게 오류가 발생하기 쉽습니다. Microsoft에서 이것을 고려하십시오.Notes to Callers
The .NET Framework 3.5 SP1 and earlier versions maintains an internal list of white-space characters that this method trims if trimChars is null or an empty array. Starting with the .NET Framework 4, if trimChars is null or an empty array, the method trims all Unicode white-space characters (that is, characters that produce a true return value when they are passed to the IsWhiteSpace(Char) method). Because of this change, the Trim() method in the .NET Framework 3.5 SP1 and earlier versions removes two characters, ZERO WIDTH SPACE (U+200B) and ZERO WIDTH NO-BREAK SPACE (U+FEFF), that the Trim() method in the .NET Framework 4and later versions does not remove. In addition, the Trim() method in the .NET Framework 3.5 SP1 and earlier versions does not trim three Unicode white-space characters: MONGOLIAN VOWEL SEPARATOR (U+180E), NARROW NO-BREAK SPACE (U+202F), and MEDIUM MATHEMATICAL SPACE (U+205F).
따라서
UnicodeCategory
에 정의된 "공백"범주가 없으면 거래는 무엇입니까? 공백에 대해 작동할 항목을 어떻게 선언합니까?좋아, 공정하게 말하면 IsWhitespace()이 존재하기 때문에 이것은 인위적인 예입니다. 그러나 이것이 유지되지 않는 경우가 많이 있으며, 범주가 함수를 통해 정의되지 않은 경우 실제로 할 수 있는 매우 깔끔한 일이 있습니다. 이에 대해서는 이 게시물을 계속하면서 설명하겠습니다.
"공백"은 카테고리와 혼동되지 않는 속성입니다. 유니코드는 이렇게 이상합니다. 우리에게 개념적으로는 둘 다 범주입니다. 우리는 확실히 같은 방식으로 둘 중 하나를 선언하고 싶습니다.
Categories , 이 문제를 해결하기 위해 설계된 비교적 작은Stringier 프로젝트 등을 입력하십시오.
전체 시스템은 범주를 나타내는
Category
유형을 통해 작동합니다.구체적으로는 a
StandardCategory<T>
, a PropertyCategory<T>
및 a RangeCategory<T>
의 세 가지 "호의"가 있습니다. 왜 이것들이 일반적입니까? 글쎄요, CRTP지만 무시하세요. 거기에서 표준 범주와 같은 여러 사용 가능한 Category
인스턴스가 있습니다. UppercaseLetter
, DecimalDigit
, SpaceSeparator
등. 속성: Whitespace
등; Superscript
, Subscript
, BoxDrawing
등과 같이 어느 것에도 정의되지 않은 범주도 있습니다. 이러한 각 유형은 정확히 해당 컬렉션을 나타냅니다. 그러나 UnicodeCategory
값도 트리로 재작업되었습니다. 편지가 필요하세요? 카테고리가 있습니다. Letter
구체적으로.Core 에 대한 내 작업의 일부로 거기에 정의된 모든 기능이 이미 이
Category
API를 사용하도록 조정되었으며 분류 목적으로 참조할 것입니다. 이는 다음이 가능함을 의미합니다." Hello world ".Contains(new Whitespace());
그리고 간단하게, 문자열에 어떤 공백 문자가 있는지는 중요하지 않습니다. U+0020뿐만 아니라 어떤 문자에서도 작동합니다.
이제 여기에서 수많은 가능성이 있습니다. 일부는 계획되었고 일부는 생각만 하고 일부는 완전히 발견되지 않았습니다. This issue 집합 이론을 통해 범주를 임의로 결합하기 위한 범주 표현의 생성 가능성을 설명합니다. 제공하는 힘은 엄청납니다.
Category
를 기반으로 하는 것으로부터 막대한 이익을 얻을 수 있는 프로젝트도 이미 존재합니다. 텍스트는 주어진 언어의 요소를 포함합니다. 이것은 또한 Literary 에 적용되어 유사한 역할을 하는 미리 만들어진 패턴을 대체하여 \s
, \S
, \w
, \W
등의 넌센스에 대한 확장 가능하고 훨씬 더 쉽게 읽을 수 있는 대안을 허용합니다. 정규식에서.이 API는 매우 선언적인 특성과 엄청난 가능성을 고려할 때 매우 흥분됩니다. 나는 그것이 당신을 흥분시키기를 바랍니다.
Reference
이 문제에 관하여(카테고리 클래스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/entomy/category-class-1602텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)