ไลบรารี 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
ซึ่งกำหนดยูทิลิตี้ที่แยกข้อความออกเป็นรายการคำ โดยทั่วไป เราต้องเข้าใจว่าตัวแปลงตัวพิมพ์ข้อความทำงานกับรายการคำ ไม่ใช่บนข้อความดิบ เนื่องจากแต่ละกรณีข้อความจะรวมคำในข้อความเข้าด้วยกันในลักษณะที่แตกต่างกัน อย่างไรก็ตาม ในข้อความ Raw จะไม่สามารถมองเห็นด้วยเครื่องได้เมื่อคำเริ่มต้นและสิ้นสุดโดยไม่มี WordsSplitter
เพิ่มเติม ตัวอย่างเช่น ใน foo bar baz
จุดเริ่มต้น/จุดสิ้นสุดจะถูกกำหนดโดยช่องว่าง แต่ใน fooBarBaz
จะถูกกำหนดโดยการเปลี่ยนแปลงขนาดตัวพิมพ์
ไลบรารีมีการใช้งานในตัวหลายอย่างของอินเทอร์เฟซทั้งสองในคลาส StandardTextCases
และ StandardWordsSplitters
เพื่อครอบคลุมกรณีข้อความที่พบบ่อยที่สุดและวิธีการแยกข้อความเป็นคำ (ดูบทถัดไป)
คลาส dev.turingcomplete.textcaseconverter.StandardTextCases
มีอินสแตนซ์แบบสแตติกสำหรับกรณีข้อความที่พบบ่อยที่สุด:
ชื่อ | ตัวอย่าง | หมายเหตุ |
---|---|---|
คดีอูฐที่เข้มงวด | อูฐSQLCase | อักขระตัวพิมพ์ใหญ่แต่ละตัวจะกำหนดคำใหม่ |
เคสอูฐนิ่ม | CamelSqlCase | อักขระตัวพิมพ์ใหญ่จะกำหนดคำใหม่ก็ต่อเมื่ออักขระก่อนหน้าไม่ใช่ตัวพิมพ์ใหญ่ |
เคสเคบับ | เคบับ-กรณี | |
คดีงู | งู_กรณี | |
คดีงูกรีดร้อง | กรีดร้อง_งู_กรณี | |
คดีรถไฟ | รถไฟกรณี | |
คดีโคบอล | ภาษาโคบอล-กรณี | |
คดีปาสคาล | ปาสคาลเคส | |
คดีงูปาสคาล | Pascal_Snake_Case | อักขระตัวแรกเป็นตัวพิมพ์ใหญ่เสมอ |
คดีงูอูฐ | อูฐ_งู_กรณี | ใช้เคสอูฐแบบนิ่ม อักขระตัวแรกเป็นตัวพิมพ์เล็กเสมอ |
ตัวพิมพ์เล็ก | ตัวพิมพ์เล็ก | |
ตัวพิมพ์ใหญ่ | ตัวพิมพ์ใหญ่ | |
กรณีกลับด้าน | กรณีกลับด้าน | กรณีของตัวละครแต่ละตัวจะพลิก |
กรณีสลับกัน | กรณีอื่นๆ | อักขระแต่ละตัวที่ตามมาจะมีตัวพิมพ์ที่ตรงกันข้ามกับอักขระก่อนหน้า การสลับเริ่มต้นด้วยสิ่งที่ตรงกันข้ามกับอักขระตัวแรก |
ตัวอย่างต่อไปนี้แสดงการใช้เมธอด convert*()
ของอินเทอร์เฟซ TextCase
สำหรับการใช้งาน 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
จะมี WordsSplitter
ผ่าน TextCase#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()
ผลลัพธ์ของทั้งสองวิธีมีความละเอียดอ่อนเกี่ยวกับสถานที่ การเรียกเมธอดเหล่านี้ทั้งหมดในไลบรารีนี้จะใช้ Locale
ที่ตั้งค่าไว้ในฟิลด์สแตติกของคลาส dev.turingcomplete.textcaseconverter.Configuration
ตามค่าเริ่มต้น Locale.ROOT
จะถูกใช้
ลิขสิทธิ์ (c) 2023 Marcel Kliemannel
ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 ("ใบอนุญาต"); คุณไม่สามารถใช้ไฟล์นี้ได้เว้นแต่จะเป็นไปตามใบอนุญาต
คุณสามารถขอรับสำเนาใบอนุญาตได้ที่ https://www.apache.org/licenses/LICENSE-2.0
เว้นแต่กฎหมายที่ใช้บังคับกำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ที่เผยแพร่ภายใต้ใบอนุญาตนี้จะถูกแจกจ่าย "ตามที่เป็น" โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อจำกัดภายใต้ใบอนุญาต