Java には単語を複数形にする簡単な方法がありますか? そうでない場合、Rails にはあるのに、なぜ利用できないのか疑問に思っています。
具体的な理由は?
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";
}
}
追加の使用上の注意...おそらくご覧のとおり、渡される単語の最初の文字が大文字であることが期待されます(例外リストにないかどうかは関係ありません)。これを異なる方法で処理する無数の方法があります。それは単に私たちの特定のニーズを満たしたものです.