Diese Java/Kotlin-Bibliothek bietet eine intuitive API zum Konvertieren von Zeichenfolgen zwischen verschiedenen Textfällen. Es verfügt über eine breite Palette integrierter Unterstützung für die gängigsten Textfälle. Darüber hinaus ist die Bibliothek so konzipiert, dass sie problemlos um neue benutzerdefinierte Textfälle erweitert werden kann, was sie äußerst flexibel und anpassungsfähig macht.
In diesem Repository kommen Änderungen nicht so oft vor und die Bibliothek wird nur sehr selten aktualisiert. Dies ist jedoch kein aufgegebenes Projekt. Da der Code relativ einfach ist und über eine gute Testabdeckung verfügt, besteht kaum Änderungsbedarf.
Diese Bibliothek ist bei Maven Central verfügbar. Sie besteht aus einer Hauptbibliothek und einer optionalen Bibliothek, die Erweiterungen für Kotlin bereitstellt.
// 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 >
Die Grundlage dieser Bibliothek sind zwei Schnittstellen:
dev.turingcomplete.textcaseconverter.TextCase
dargestellt. Es bietet Metainformationen (z. B. title()
und example()
) und über verschiedene Variationen der convert*()
Methoden die Möglichkeit, einen Text in die oder aus der Groß-/Kleinschreibung dieses Textes umzuwandeln.dev.turingcomplete.textcaseconverter.WordsSplitter
, die ein Dienstprogramm definiert, das einen Text in eine Liste von Wörtern aufteilt. Im Allgemeinen müssen wir verstehen, dass ein Text-Groß-/Kleinschreibungskonverter mit einer Liste von Wörtern arbeitet, nicht mit Rohtext. Dies liegt daran, dass jeder Textfall die Wörter eines Textes auf unterschiedliche Weise zusammenfügt. Allerdings ist in einem Rohtext ohne einen zusätzlichen WordsSplitter
nicht maschinell sichtbar, wo ein Wort beginnt und endet. Beispielsweise würde in foo bar baz
der Anfang/das Ende durch ein Leerzeichen definiert, in fooBarBaz
jedoch durch die Änderung der Groß-/Kleinschreibung.
Die Bibliothek verfügt über mehrere integrierte Implementierungen beider Schnittstellen in den Klassen StandardTextCases
und StandardWordsSplitters
um die gängigsten Textfälle und Möglichkeiten zum Aufteilen eines Textes in Wörter abzudecken (siehe nächste Kapitel).
Die Klasse dev.turingcomplete.textcaseconverter.StandardTextCases
enthält statische Instanzen für die häufigsten Textfälle:
Name | Beispiel | Bemerkung |
---|---|---|
Strenger Kamelfall | camelSQLCase | Jedes Großbuchstabe definiert ein neues Wort. |
Weiche Kamelhülle | camelSqlCase | Ein Großbuchstabe definiert ein neues Wort nur dann, wenn das vorherige Zeichen kein Großbuchstabe ist. |
Dönerkoffer | Dönerkoffer | |
Schlangenfall | Snake_case | |
Schreiende Schlangenhülle | SCREAMING_SNAKE_CASE | |
Zugkoffer | Zugkoffer | |
Cobol-Gehäuse | COBOL-GEHÄUSE | |
Pascal-Fall | PascalCase | |
Pascal Snake Case | Pascal_Snake_Case | Das erste Zeichen ist immer ein Großbuchstabe. |
Kamelschlangenetui | camel_Snake_Case | Verwendet eine weiche Kamelhülle. Das erste Zeichen ist immer ein Kleinbuchstabe. |
Kleinbuchstaben | Kleinbuchstaben | |
Großbuchstaben | GROSSBUCHSTABEN | |
Umgekehrter Fall | Umgekehrter Fall | Die Groß-/Kleinschreibung jedes Zeichens wird vertauscht. |
Abwechselnder Fall | ABWECHSELNDER FALL | Jedes nachfolgende Zeichen hat die umgekehrte Schreibweise des vorherigen Zeichens. Der Wechsel beginnt mit dem Gegenteil des ersten Zeichens. |
Das folgende Beispiel zeigt die Verwendung der convert*()
-Methoden der TextCase
Schnittstelle für die integrierte Camel Case-Implementierung:
// 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 " )
Die Klasse dev.turingcomplete.textcaseconverter.StandardWordsSplitters
stellt statische Instanzen für die gängigsten Methoden zum Aufteilen eines Textes in Wörter bereit:
), das einen Text um (möglicherweise mehrere) Leerzeichen aufteilt. Leerwörter werden weggelassen.-
). Leerwörter werden weggelassen._
). Leerwörter werden weggelassen.fooBar
die beiden Wörter foo
und Bar
und SQL
wären die drei Wörter S
, Q
und L
.fooBar
wäre zum Beispiel die beiden Wörter foo
und Bar
und SQL
wäre das eine Wort. Beachten Sie, dass jeder TextCase
über TextCase#wordsSplitter
einen WordsSplitter
bereitstellt, mit dem ein in diesem Textfall angegebener Text in einzelne Wörter aufgeteilt werden kann. Dies wird intern verwendet, beispielsweise wenn wir die Groß- und Kleinschreibung eines Textes in eine andere umwandeln möchten, ohne explizit einen WordsSplitter
angeben zu müssen.
Durch das Hinzufügen der Bibliothek test-case-converter-kotlin-extension
werden einige Kotlin-Erweiterungen bereitgestellt, die die Verwendung dieser Bibliothek im Kotlin-Code erleichtern. Diese zusätzlichen Funktionen sind im folgenden Beispiel zu sehen:
// 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()
Einige integrierte Text- und Worttrenner verwenden String#toLowerCase()
oder String#toUpperCase()
. Die Ausgabe beider Methoden ist abhängig vom Gebietsschema. Alle Aufrufe dieser Methoden in dieser Bibliothek verwenden das Locale
, das in den statischen Feldern der Klasse dev.turingcomplete.textcaseconverter.Configuration
festgelegt ist. Standardmäßig wird Locale.ROOT
verwendet.
Copyright (c) 2023 Marcel Kliemannel
Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden.
Sie können eine Kopie der Lizenz unter https://www.apache.org/licenses/LICENSE-2.0 erhalten.
Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die im Rahmen der Lizenz vertriebene Software „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, vertrieben. Die spezifische Sprache, die die Berechtigungen und Einschränkungen im Rahmen der Lizenz regelt, finden Sie in der LIZENZ.