我正在编写一个Scala方法来复数字符串:
def plural(value: String) = {
value match {
case "fish" | "dice" | "sheep" => value
case "foot" => value.dropRight(3) + "eet"
case "woman" | "man" => value.dropRight(2) + "en"
case "tooth" => value.dropRight(4) + "eeth"
case _ => value.takeRight(2).toLowerCase() match {
case "sh" | "ch" => value + "es"
case "ay" => value + "s"
case _ => value.takeRight(1).toLowerCase() match {
case "s" => value + "es"
case "y" => value.dropRight(1) + "ies"
case _ => value + "s"
}
}
}
}
这显然不包括英语中的所有特殊情况。我想知道是否存在库方法吗? (以及查找复数字符串的可能单一集合)。
提前感谢您的帮助。
答案 0 :(得分:2)
关于堆栈溢出已经有了很好的讨论: Pluralizer
主要外卖:
Evo Inflector可用于生成复数形式的单词。它使用Damian Conway的论文An Algorithmic Approach to English Pluralization中的算法。对于来自wiki词典的单词,成功率约为70%,对于1000个最常见的英语单词,成功率为100%。