這個 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 取得授權副本。
除非適用法律要求或書面同意,否則根據許可證分發的軟體均以「原樣」分發,不帶任何明示或暗示的保證或條件。請參閱許可證,了解許可證下管理權限和限制的特定語言。