LoginSignup
2
1

More than 3 years have passed since last update.

【Go】英単語を 複数形 ⇔ 単数形 に相互変換

Posted at

今日は 英単語を 複数形 ⇔ 単数形 に相互変換 してくれるGo言語ライブラリをご紹介します。

"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)
}
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1