在某些口语中,将单数词变为复数词可能非常困难,而其他语言则有简单的规则。
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。如果 count 为 0,将使用单数单词。
"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 变成 mice,louse 变成 lice。
let rule: GrammaticalNumberRule = .singular(#"(matr)ices$"#, #"$1ix"#)
将 matrices 变为 matrix。
GrammaticalNumberRule.add(rule)
为了支持其他语言,请将 language 参数传递给您的自定义规则。使用相同的 language 值调用 .pluralized(language: yourLanguage) — 比如这样:.pluralized(language: "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 许可证 下发布。