今日は 英単語を 複数形 ⇔ 単数形 に相互変換 してくれるGo言語ライブラリをご紹介します。
- go-pluralize
https://github.com/gertd/go-pluralize
MITライセンス
"factory" -> "factories"
こんな風に変換してくれます。
私は ORM(gorm) の モデル(構造体)名 から DBテーブル名 を逆算するのに使ったりしています。
コマンド実行機能も付いてるので、Go本体をインストールしてさえいればバッチ処理等にも活用できますね。
(コマンド方式の説明はこちらを。https://github.com/gertd/go-pluralize#pluralize-command-line )
Go言語での用例
package main
import (
"fmt"
"github.com/gertd/go-pluralize"
)
func main() {
plu := pluralize.NewClient()
//複数形に
print(plu.Plural("apple")) // -> apples
print(plu.Plural("factory")) // -> factories
print(plu.Plural("fish")) // -> fish
//単数形に
print(plu.Singular("apples")) // -> apple
print(plu.Singular("factories")) // -> factory
print(plu.Singular("fish")) // -> fish
//複数形か判定
print(plu.IsPlural("apple")) // -> false
print(plu.IsPlural("apples")) // -> true
//単数形か判定
print(plu.IsSingular("apple")) // -> true
print(plu.IsSingular("apples")) // -> false
//複数形に
// ・モノの個数を指定して単数か複数かを判定させて出力
// ・個数を出力に含めるか指定できる
print(plu.Pluralize("apple", 1, true)) // -> 1 apple
print(plu.Pluralize("apple", 3, true)) // -> 3 apples
print(plu.Pluralize("apple", 3, false)) // -> apples
//例外単語を登録(ちなみに大文字小文字の違いは影響しない)
plu.AddUncountableRule("final fantasy")
print(plu.Plural("FINAL FANTASY")) // -> FINAL FANTASY
print(plu.Plural("FANTASY")) // -> FANTASIES
}
func print(s interface{}) {
fmt.Println(s)
}