텍스트 및 일상 도구 · 텍스트 도구 키트
대소문자 변환기가 camelCase 및 parseHTTPResponse와 같은 약어를 분할하는 방법
· 작동 원리
텍스트 변환 개발자 워크플로 유니코드
좋은 사례 변환기가 적용하는 세 가지 경계 규칙(구분자 실행, 아래쪽에서 위쪽으로의 전환, 약어 가장자리)을 설명하고, 왜parHTTPResponse2Json이 약한 사례를 노출하는 테스트인지 설명합니다.
parse_h_t_t_p_response 및 기타 실패 — 식별자를 변환하는 것이 'hello world'를 변환하는 것보다 어려운 이유
"hello world"를 hello_world로 바꾸는 것은 쉽습니다. parseHTTPResponse를parse_h_t_t_p_response로 바꾸는 것은 알고리즘이 각 대문자를 단어로 처리했다는 표시입니다. Python API에 대한 JavaScript 식별자의 이름을 바꾸는 개발자는 그 반대가 필요합니다. 먼저 토큰을 식별한 다음 대상의 조인 규칙을 적용합니다. 동일한 첫 번째 단계에서는 뱀, 케밥, 낙타 및 파스칼 출력이 출력되어야 합니다. 그렇지 않으면 4개의 버튼이 단어가 시작되는 위치에 대해 동의하지 않습니다.
규칙 1: 구분 기호 실행 — 공백, 하이픈, 밑줄 및 구두점은 모두 경계를 표시하지만 행에 있는 숫자는 많습니다.
공백, 하이픈, 밑줄 및 기타 비문자/비숫자 문자는 이미 경계를 표시합니다. 실행을 하나의 구분 기호로 처리합니다. 버튼--기본 버튼은 하이픈 사이의 빈 토큰이 아니라 두 개의 토큰이 되어야 합니다. ToolAcre의 대소문자 변환기는 문자와 숫자에 대한 유니코드 인식 표현으로 분할되므로 일반적인 비ASCII 문자가 단순히 A~Z 외부에 있다는 이유로 버려지지 않습니다. 공백 정규화는 원래 소스 파일을 자동으로 변경하는 것이 아니라 명명 규칙에 관한 것입니다.
규칙 2: 아래에서 위로 전환 — 소문자나 숫자 뒤에 대문자가 오면 새 단어가 시작됩니다.
소문자 또는 숫자 뒤에 대문자가 오는 패턴은 대문자 앞에 경계를 삽입합니다. 그러면 parsResponse가 Pars + Response로 바뀌고 2Json이 2 + Json이 될 수 있습니다. 이 규칙 자체는 앞의 단어를 마지막 숫자에서 분리하지 않습니다. ToolAcre는 대문자 J를 분할하기 전에 Response2를 하나의 토큰으로 처리합니다. Response + 2를 원하는지 여부는 스타일 가이드 결정이므로 모든 변환기가 동일한 선택을 한다고 가정하는 대신 숫자 식별자를 검사하십시오.
규칙 3: 두문자어 가장자리 — 대문자 다음에 대문자, 소문자 쌍이 이어지며 마지막 대문자 앞에서 두문자어가 끝납니다.
두문자어에는 한 가지 더 예측이 필요합니다. HTTPResponse에서 대문자 실행 HTTP는 R 뒤에 소문자 응답이 오기 때문에 R보다 먼저 끝납니다. 실행 및 대문자-소문자 쌍과 일치하는 규칙은 H + T + T + P + 응답이 아닌 HTTP + 응답이라는 경계를 삽입합니다. 이름이 모두 대문자로 끝나는 경우 새 단어를 표시하는 소문자 접미사가 없으며 두문자어는 함께 유지됩니다. 이것이 식별자를 토큰화하는 것과 모든 대문자 앞에 구분 기호를 삽입하는 것의 차이점입니다.
숫자 및 특수 사례 - '2Json'이 분할되는 경우, 모든 스타일 가이드를 충족하는 규칙 세트가 없는 이유
숫자 규칙은 여전히 모호합니다. version2Parser, HTTP2Json 및 IP6Address가 모두 동일한 단어 그룹을 의미하는 것은 아닙니다. ToolAcre는 후속 대문자가 다음 경계를 트리거할 때까지 이전 토큰으로 숫자를 그룹화합니다. 마찬가지로, 로케일 구분 대문자를 사용하는 문자는 ASCII와 다르게 확장되거나 동작할 수 있습니다. 터키어 점/점 없는 i 및 독일어 ß는 수동 검토가 필요합니다. 이 도구는 변수의 의미론적 명명을 이해한다고 주장하는 것이 아니라 결정론적 변환을 수행합니다.
실제 예제 — 뱀, 케밥, 낙타 및 파스칼 케이스를 통해 구문 분석HTTPResponse2Json 및 하이픈으로 연결된 CSS 클래스 실행
실제 대소문자 변환기를 통해 parseHTTPResponse2Json을 실행합니다. 스네이크 케이스에서는parse_http_response2_json,케밥 케이스에서는parse-http-response2-json,카멜 케이스에서는parseHttpResponse2Json,파스칼 케이스에서는ParseHttpResponse2Json을 생성합니다. 버튼--기본의 경우 연속 구분 기호는 버튼-기본 및 버튼-기본으로 축소됩니다. 이러한 출력은 성공적인 약어 규칙과 숫자 그룹화 선택을 모두 노출합니다. 코드베이스 전체에서 검색 및 바꾸기를 사용하기 전에 대상 API에 대해 테스트하세요.
여기서 다루지 않는 내용 — 자체 포스트가 있는 터키어 점선 i와 같은 로케일별 대소문자 구분
이 메커니즘은 모든 언어의 대소문자 구분을 구현하지 않으며, 약어가 특정 도메인 용어를 의미한다고 추론하거나 프로그램 전체에서 참조 이름을 바꾸지는 않습니다. 문자열 및 식별자 변환은 기호 인식을 사용하여 소스 코드를 리팩토링하는 것과 다릅니다. 이 도구는 Python 서비스가 이름이 변경된 JSON 필드를 허용한다고 약속할 수 없습니다. 발신자는 여전히 이전 철자법에 의존할 수 있습니다. 공개 필드 이름을 변경한 후 스키마 테스트를 실행하세요.
요점 - Text Toolkit의 대소문자 변환기는 이 세 가지 규칙을 적용하고 결과를 즉시 표시하므로 코드에 붙여넣기 전에 확인할 수 있습니다.
먼저 구분 기호, 전환 및 약어 가장자리를 사용하여 토큰을 식별합니다. 그런 다음 가입하고 케이스에 넣으십시오. Text Toolkit을 사용하면 해당 규칙을 즉시 출력하여 볼 수 있으며 변환을 취소할 수 있습니다. 약어가 많은 필드 이름의 경우 전체 저장소에 간단한 대문자 정규식을 맹목적으로 적용하기보다는 실제 뱀/케밥 결과를 비교하십시오.