语法数量 (GrammaticalNumber)

在某些口语中,将单数词变为复数词可能非常困难,而其他语言则有简单的规则

GrammaticalNumber深受 ActiveSupport::Inflector 的启发,该 ActiveSupport::Inflector 来源于 Ruby on Rails Web 框架。

用法

将单数词变为复数

"person".pluralized()               // people
"center".pluralized()               // centers
"sheep".pluralized()                // sheep
"knife".pluralized()                // knives
"mouse".pluralized()                // mice
"money".pluralized()                // money
"axis".pluralized()                 // axes
"item".pluralized()                 // items
"status".pluralized()               // statuses
"fox".pluralized()                  // foxes
"move".pluralized()                 // moves
"tooth".pluralized()                // teeth
"foxes".pluralized()                // foxes
"millennium".pluralized()           // millennia
"child".pluralized()                // children
"matrix".pluralized()               // matrices
"man".pluralized()                  // men
"ox".pluralized()                   // oxen
"radius".pluralized()               // radii
"grandchild".pluralized()           // grandchildren

将复数词变为单数

"children".singularized()           // child
"tables".singularized()             // table
"computers".singularized()          // computer
"mice".singularized()               // mouse
"teeth".singularized()              // tooth
"axes".singularized()               // axis
"women".singularized()              // woman
"grandchildren".singularized()      // grandchild

区分大小写

GrammaticalNumber 将尝试匹配您输入的单词的大小写。支持小写、大写和首字母大写的单词。

"tooth".pluralized()                // teeth
"TOOTH".pluralized()                // TOOTH
"Tooth".pluralized()                // Teeth

向单词添加计数

在复数化的 String 前面加上 count。如果 count0,将使用单数单词。

"child".pluralized(count: 0)        // 0 children
"child".pluralized(count: 1)        // 1 child
"child".pluralized(count: 3)        // 3 children

"knife".pluralized(count: 0)        // 0 knives
"knife".pluralized(count: 1)        // 1 knife
"knife".pluralized(count: 3)        // 3 knives

"sheep".pluralized(count: 0)        // 0 sheep
"sheep".pluralized(count: 1)        // 1 sheep
"sheep".pluralized(count: 3)        // 3 sheep

定义自定义规则

不可数规则

let rule: GrammaticalNumberRule = .uncountable("money")

money 将永远不会改变。

不规则规则:从复数到单数

let rule: GrammaticalNumberRule = .irregular("tooth", "teeth")

当与 pluralized() 一起使用时,将 tooth 变为 teeth。当与 singularized() 一起使用时,将 teeth 变为 tooth

复数规则:使用正则表达式从单数到复数

let rule: GrammaticalNumberRule = .plural(#"^(m|l)ouse$"#, #"$1ice"#)

mouse 变成 micelouse 变成 lice

单数规则:使用正则表达式从复数到单数

let rule: GrammaticalNumberRule = .singular(#"(matr)ices$"#, #"$1ix"#)

matrices 变为 matrix

应用规则,使其可用

GrammaticalNumberRule.add(rule)

支持其他语言

为了支持其他语言,请将 language 参数传递给您的自定义规则。使用相同的 language 值调用 .pluralized(language: yourLanguage) — 比如这样:.pluralized(language: "tr")

土耳其语 (tr) 示例

GrammaticalNumberRule.add(.plural(#"([aoıu][^aoıueöiü]{0,6})$"#, #"$1lar"#), language: "tr")
GrammaticalNumberRule.add(.plural(#"([eöiü][^aoıueöiü]{0,6})$"#, #"$1ler"#), language: "tr")
GrammaticalNumberRule.add(.singular(#"l[ae]r$"#, #""#), language: "tr")
"kitap".pluralized(language: "tr")              // kitaplar
"yemek".pluralized(language: "tr")              // yemekler

联系方式

其他项目

许可证

GrammaticalNumber 在 MIT 许可证 下发布。