用Java多元化的方法

Slo*_*der 0 java pluralize

Java是否有一种直接的方法来复数单词?如果没有,我想知道为什么当Rails有一个时它不可用.

任何具体原因?

Pet*_*ete 6

jtahlborn在语言特异性方面有一个很好的观点.也就是说,这就是我在我们的应用程序中使用的内容.它并不全面,但是当您点击它们时添加异常很容易.

这是C#,但应该足够接近或你要适应:

public string GetPlural(string singular)
{
    string CONSONANTS = "bcdfghjklmnpqrstvwxz";

    switch (singular)
    {
        case "Person":
            return "People";
        case "Trash":
            return "Trash";
        case "Life":
            return "Lives";
        case "Man":
            return "Men";
        case "Woman":
            return "Women";
        case "Child":
            return "Children";
        case "Foot":
            return "Feet";
        case "Tooth":
            return "Teeth";
        case "Dozen":
            return "Dozen";
        case "Hundred":
            return "Hundred";
        case "Thousand":
            return "Thousand";
        case "Million":
            return "Million";
        case "Datum":
            return "Data";
        case "Criterion":
            return "Criteria";
        case "Analysis":
            return "Analyses";
        case "Fungus":
            return "Fungi";
        case "Index":
            return "Indices";
        case "Matrix":
            return "Matrices";
        case "Settings":
            return "Settings";
        case "UserSettings":
            return "UserSettings";
        default:
            // Handle ending with "o" (if preceeded by a consonant, end with -es, otherwise -s: Potatoes and Radios)
            if (singular.EndsWith("o") && CONSONANTS.Contains(singular[singular.Length - 2].ToString()))
            {
                return singular + "es";
            }
            // Handle ending with "y" (if preceeded by a consonant, end with -ies, otherwise -s: Companies and Trays)
            if (singular.EndsWith("y") && CONSONANTS.Contains(singular[singular.Length - 2].ToString()))
            {
                return singular.Substring(0, singular.Length - 1) + "ies";
            }
            // Ends with a whistling sound: boxes, buzzes, churches, passes
            if (singular.EndsWith("s") || singular.EndsWith("sh") || singular.EndsWith("ch") || singular.EndsWith("x") || singular.EndsWith("z"))
            {
                return singular + "es";
            }
            return singular + "s";

    }
}
Run Code Online (Sandbox Code Playgroud)

另外一个使用说明......正如您可能看到的那样,它期望您传入的任何单词都将首字母大写(如果它不在例外列表中则无关紧要).有许多不同的处理方法.它只是满足我们特殊需求的东西.