1

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

这显然没有涵盖英语中的所有特殊情况。我想知道是否存在为此的库方法?(并用于查找复数字符串的可能单数集合)。

在此先感谢您的帮助。

4

1 回答 1

2

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

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

于 2013-06-06T12:42:36.807 回答