用于查找复数字符串的Scala库,以及复数的可能的单数?

时间:2013-06-06 12:11:58

标签: scala

我正在编写一个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"
            }
        }
    }
}

这显然不包括英语中的所有特殊情况。我想知道是否存在库方法吗? (以及查找复数字符串的可能单一集合)。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

关于堆栈溢出已经有了很好的讨论: Pluralizer

主要外卖:
Evo Inflector可用于生成复数形式的单词。它使用Damian Conway的论文An Algorithmic Approach to English Pluralization中的算法。对于来自wiki词典的单词,成功率约为70%,对于1000个最常见的英语单词,成功率为100%。