Esta biblioteca Java/Kotlin proporciona una API intuitiva para convertir cadenas entre diferentes casos de texto. Tiene una amplia gama de soporte integrado para los casos de texto más comunes. Además, la biblioteca está diseñada para ampliarse fácilmente con nuevos casos de texto personalizados, lo que la hace muy flexible y adaptable.
En este repositorio, los cambios no ocurren con tanta frecuencia y la biblioteca se actualiza muy raramente. Sin embargo, este no es un proyecto abandonado. Dado que el código es relativamente simple y tiene una buena cobertura de prueba, casi no hay necesidad de cambiar nada.
Esta biblioteca está disponible en Maven Central. Consta de una biblioteca principal y otra opcional que proporciona extensiones para 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 >
La base de esta biblioteca son dos interfaces:
dev.turingcomplete.textcaseconverter.TextCase
. Proporciona metainformación (por ejemplo, title()
y example()
) y, a través de varias variaciones de los métodos convert*()
, la capacidad de convertir un texto hacia o desde ese texto entre mayúsculas y minúsculas.dev.turingcomplete.textcaseconverter.WordsSplitter
que define una utilidad que divide un texto en una lista de palabras. Generalmente, debemos entender que un conversor de mayúsculas y minúsculas funciona sobre una lista de palabras, no sobre texto sin formato. Esto se debe a que cada caso de texto junta las palabras de un texto de una manera diferente. Sin embargo, en un texto sin formato, la máquina no puede ver dónde comienza y termina una palabra sin un WordsSplitter
adicional. Por ejemplo, en foo bar baz
el inicio/fin estaría definido por un espacio, pero en fooBarBaz
estaría definido por el cambio de mayúsculas y minúsculas.
La biblioteca tiene varias implementaciones integradas de ambas interfaces en las clases StandardTextCases
y StandardWordsSplitters
para cubrir los casos de texto más comunes y las formas de dividir un texto en palabras (consulte los siguientes capítulos).
La clase dev.turingcomplete.textcaseconverter.StandardTextCases
contiene instancias estáticas para los casos de texto más comunes:
Nombre | Ejemplo | Observación |
---|---|---|
Caso estricto del camello | camelloSQLCaso | Cada carácter en mayúscula define una nueva palabra. |
Estuche Suave Camello | camelloSqlCase | Un carácter en mayúscula define una nueva palabra sólo si el carácter anterior no está en mayúscula. |
Estuche Kebab | estuche-kebab | |
Caso de serpiente | caso_serpiente | |
Caso de la serpiente gritando | CASE_SCREAMING_SNAKE_CASE | |
Caso de tren | Estuche de tren | |
Caso Cobol | COBOL-CASO | |
Caso Pascal | PascalCaso | |
Caso Serpiente Pascal | Pascal_Snake_Case | El primer carácter siempre está en mayúscula. |
Estuche Serpiente Camello | camel_snake_case | Utiliza estuche camel suave. El primer carácter siempre está en minúscula. |
Minúscula | minúscula | |
Mayúsculas | MAYÚSCULAS | |
Caso invertido | CASO INVERTIDO | Se invertirá el caso de cada personaje. |
Caso alterno | CASO ALTERNATIVO | Cada carácter subsiguiente tendrá el caso opuesto al carácter anterior. La alternancia comienza con el opuesto del primer carácter. |
El siguiente ejemplo muestra el uso de los métodos convert*()
de la interfaz TextCase
para la implementación integrada de Camel Case:
// 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 " )
La clase dev.turingcomplete.textcaseconverter.StandardWordsSplitters
proporciona instancias estáticas de las formas más comunes de dividir un texto en palabras:
), que divide un texto en (posiblemente varios) caracteres de espacio. Se omiten las palabras en blanco.-
). Se omiten las palabras en blanco._
). Se omiten las palabras en blanco.fooBar
serían las dos palabras foo
y Bar
, y SQL
serían las tres palabras S
, Q
y L
fooBar
serían las dos palabras foo
y Bar
, y SQL
sería una sola palabra. Tenga en cuenta que cada TextCase
proporciona un WordsSplitter
a través de TextCase#wordsSplitter
, que se puede usar para dividir un texto dado en ese caso de texto en palabras individuales. Esto se usa internamente, por ejemplo, cuando queremos convertir un caso de texto a otro sin tener que especificar explícitamente un WordsSplitter
.
Al agregar la biblioteca test-case-converter-kotlin-extension
, se proporcionan algunas extensiones de Kotlin, lo que facilita el uso de esta biblioteca en el código Kotlin. Estas características adicionales se pueden ver en el siguiente ejemplo:
// 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()
Algunos casos de texto integrados y divisores de palabras usan String#toLowerCase()
o String#toUpperCase()
. La salida de ambos métodos depende de la configuración regional. Todas las llamadas a estos métodos en esta biblioteca utilizarán la configuración Locale
configurada en los campos estáticos de la clase dev.turingcomplete.textcaseconverter.Configuration
. De forma predeterminada se utiliza Locale.ROOT
.
Copyright (c) 2023 Marcel Kliemannel
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puede utilizar este archivo excepto de conformidad con la Licencia.
Puede obtener una copia de la Licencia en https://www.apache.org/licenses/LICENSE-2.0.
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la LICENCIA para conocer el idioma específico que rige los permisos y limitaciones según la Licencia.