这个 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
类包含最常见文本情况的静态实例:
姓名 | 例子 | 评论 |
---|---|---|
严格的骆驼案 | 骆驼SQL案例 | 每个大写字符定义一个新单词。 |
软驼色箱 | 骆驼Sql案例 | 仅当前一个字符不是大写时,大写字符才定义新单词。 |
烤肉串盒 | 烤肉串盒 | |
蛇箱 | 蛇箱 | |
尖叫蛇案 | SCREAMING_SNAKE_CASE | |
火车箱 | 火车箱 | |
科博尔案例 | COBOL-CASE | |
帕斯卡案例 | 帕斯卡案例 | |
帕斯卡蛇箱 | Pascal_Snake_Case | 第一个字符始终为大写。 |
驼蛇包 | 骆驼_蛇_案例 | 使用柔软的驼色箱。第一个字符始终为小写。 |
小写 | 小写 | |
大写 | 大写 | |
倒置案例 | 倒置案例 | 每个字符的大小写都会翻转。 |
交替案例 | 交替情况 | 每个后续字符的大小写都与前一个字符相反。交替从第一个字符的相反字符开始。 |
以下示例显示了TextCase
接口的convert*()
方法用于内置 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 " )
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 马塞尔·克莱曼内尔
根据Apache 许可证 2.0 版(“许可证”)获得许可;除非遵守许可证,否则您不得使用此文件。
您可以从 https://www.apache.org/licenses/LICENSE-2.0 获取许可证副本。
除非适用法律要求或书面同意,否则根据许可证分发的软件均按“原样”分发,不带任何明示或暗示的保证或条件。请参阅许可证,了解许可证下管理权限和限制的特定语言。