이 Java/Kotlin 라이브러리는 다양한 텍스트 케이스 간에 문자열을 변환하기 위한 직관적인 API를 제공합니다. 가장 일반적인 텍스트 사례에 대한 다양한 기본 지원 기능이 내장되어 있습니다. 또한 라이브러리는 새로운 사용자 정의 텍스트 케이스로 쉽게 확장되도록 설계되어 유연성과 적응성이 뛰어납니다.
이 저장소에서는 변경 사항이 자주 발생하지 않으며 라이브러리가 거의 업데이트되지 않습니다. 그러나 이것은 버려진 프로젝트가 아닙니다 . 코드가 상대적으로 간단하고 테스트 범위가 넓기 때문에 아무것도 변경할 필요가 거의 없습니다.
이 라이브러리는 Maven Central에서 사용할 수 있습니다. 이는 기본 라이브러리와 Kotlin용 확장을 제공하는 선택적 라이브러리로 구성됩니다.
// Main dependency
implementation ' dev.turingcomplete:test-case-converter:2.0.0 ' // Groovy build script
implementation( " dev.turingcomplete:test-case-converter:2.0.0 " ) // Kotlin build script
// Optional: Kotlin extensions
implementation ' dev.turingcomplete:test-case-converter-kotlin-extension:2.0.0 ' // Groovy build script
implementation( " dev.turingcomplete:test-case-converter-kotlin-extension:2.0.0 " ) // Kotlin build script
<!-- Main dependency -->
< dependency >
< groupId >dev.turingcomplete</ groupId >
< artifactId >test-case-converter</ artifactId >
< version >2.0.0</ version >
</ dependency >
<!-- Optional: Kotlin extensions -->
< dependency >
< groupId >dev.turingcomplete</ groupId >
< artifactId >test-case-converter-kotlin-extension</ artifactId >
< version >2.0.0</ version >
</ dependency >
이 라이브러리의 기반은 두 가지 인터페이스입니다.
dev.turingcomplete.textcaseconverter.TextCase
인터페이스로 표현됩니다. 이는 메타 정보(예: title()
및 example()
)를 제공하고, 여러 가지 convert*()
메서드 변형을 통해 텍스트를 해당 텍스트 대소문자로 변환하는 기능을 제공합니다.dev.turingcomplete.textcaseconverter.WordsSplitter
인터페이스. 일반적으로 텍스트 대소문자 변환기는 원시 텍스트가 아닌 단어 목록에서 작동한다는 점을 이해해야 합니다. 이는 각 텍스트 케이스가 텍스트의 단어를 서로 다른 방식으로 결합하기 때문입니다. 그러나 원시 텍스트에서는 추가 WordsSplitter
없이 단어가 시작하고 끝나는 위치를 기계에서 볼 수 없습니다. 예를 들어 foo bar baz
에서는 시작/끝이 공백으로 정의되지만 fooBarBaz
에서는 대소문자 변경으로 정의됩니다.
라이브러리에는 가장 일반적인 텍스트 사례와 텍스트를 단어로 분할하는 방법을 다루기 위해 StandardTextCases
및 StandardWordsSplitters
클래스에 두 인터페이스의 여러 내장 구현이 있습니다(다음 장 참조).
dev.turingcomplete.textcaseconverter.StandardTextCases
클래스에는 가장 일반적인 텍스트 사례에 대한 정적 인스턴스가 포함되어 있습니다.
이름 | 예 | 주목 |
---|---|---|
엄격한 낙타 케이스 | camelSQL케이스 | 각 대문자는 새로운 단어를 정의합니다. |
소프트 카멜 케이스 | 낙타SqlCase | 대문자는 이전 문자가 대문자가 아닌 경우에만 새 단어를 정의합니다. |
케밥 케이스 | 케밥 케이스 | |
뱀 케이스 | 뱀 케이스 | |
비명을 지르는 뱀 사건 | 비명_SNAKE_CASE | |
열차 케이스 | 기차 케이스 | |
코볼 케이스 | COBOL 사례 | |
파스칼 케이스 | 파스칼케이스 | |
파스칼 스네이크 케이스 | 파스칼_스네이크_케이스 | 첫 번째 문자는 항상 대문자입니다. |
낙타 뱀 케이스 | camel_Snake_케이스 | 소프트 카멜 케이스를 사용합니다. 첫 번째 문자는 항상 소문자입니다. |
소문자 | 소문자 | |
대문자 | 대문자 | |
거꾸로 된 케이스 | 거꾸로 된 케이스 | 각 캐릭터의 대소문자가 반전됩니다. |
대체 사례 | 대체 케이스 | 각 후속 문자는 이전 문자와 반대되는 문자를 갖습니다. 교대는 첫 번째 문자의 반대부터 시작됩니다. |
다음 예제에서는 내장된 Camel Case 구현을 위한 TextCase
인터페이스의 convert*()
메서드 사용법을 보여줍니다.
// All will return `fooBarBaz`
// Array of words
StandardTextCases . CAMEL_CASE .convert( " foo " , " bar " , " baz " )
// List of words
StandardTextCases . CAMEL_CASE .convert( List .of( " foo " , " bar " , " baz " ))
// Given a raw text in which the start/end of a word is defined by a space
StandardTextCases . CAMEL_CASE .convert( " Foo bar baz " , StandardWordsSplitters . SPACE )
// Given a raw text that is in Cobol Case and convert it into Camel Case
StandardTextCases . CAMEL_CASE .convertForm( StandardTextCases . COBOL_CASE , " FOO-BAR-BAZ " )
// Identical to the previous one, only the other way around
StandardTextCases . COBOL_CASE .convertTo( StandardTextCases . CAMEL_CASE , " FOO-BAR-BAZ " )
dev.turingcomplete.textcaseconverter.StandardWordsSplitters
클래스는 텍스트를 단어로 분할하는 가장 일반적인 방법에 대한 정적 인스턴스를 제공합니다.
), 이는 (여러 개 가능) 공백 문자 주위로 텍스트를 분할합니다. 공백 단어는 생략됩니다.-
)로 표시됩니다. 공백 단어는 생략됩니다._
)로. 공백 단어는 생략됩니다.fooBar
foo
와 Bar
두 단어이고, SQL
S
, Q
, L
이라는 세 단어입니다.fooBar
foo
와 Bar
두 단어이고 SQL
한 단어입니다. 각 TextCase
TextCase#wordsSplitter
통해 WordsSplitter
제공합니다. 이는 해당 텍스트 케이스에 제공된 텍스트를 개별 단어로 분할하는 데 사용할 수 있습니다. 예를 들어 WordsSplitter
를 명시적으로 지정하지 않고 텍스트 대소문자를 다른 대소문자로 변환하려는 경우 내부적으로 사용됩니다.
test-case-converter-kotlin-extension
라이브러리를 추가하면 일부 Kotlin 확장이 제공되므로 Kotlin 코드에서 이 라이브러리를 더 쉽게 사용할 수 있습니다. 이러한 추가 기능은 다음 예에서 볼 수 있습니다.
// Convert the given raw text into Snake Case. Both will return `foo_bar`.
" foo bar " .toTextCase( SNAKE_CASE )
" fooBar " .toTextCase( SNAKE_CASE , UPPER_CASE )
// Will create a `WordsSplitter` that splits words by the delimiter `//`.
" // " .toWordsSplitter()
일부 내장된 텍스트 케이스 및 단어 분할기는 String#toLowerCase()
또는 String#toUpperCase()
사용합니다. 두 방법의 출력은 로케일을 구분합니다. 이 라이브러리에서 이러한 메소드에 대한 모든 호출은 dev.turingcomplete.textcaseconverter.Configuration
클래스의 정적 필드에 설정된 Locale
을 사용합니다. 기본적으로 Locale.ROOT
가 사용됩니다.
저작권 (c) 2023 Marcel Kliemannel
Apache 라이센스 버전 2.0 ("라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다.
귀하는 https://www.apache.org/licenses/LICENSE-2.0에서 라이센스 사본을 얻을 수 있습니다.
해당 법률에서 요구하거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건 없이 "있는 그대로" 배포됩니다. 라이선스에 따른 허가 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하세요.