我需要将月份名称的缩短版本转换为更长的表示形式(例如“ Dec”->“ December”)。月份名称是一个字符串,我不希望先将其转换为日期对象。

是否有捷径可寻?

编辑:
我的问题与在MySQL中将“ Dec”作为表名插入(这当然会引发语法错误)有关,并且在我的用例中,与让mysql命令进行更改相比,更早更改此值会更好。

最佳答案

明显的方法是:

if (month.equalsIgnoreCase("Jan"))
    month = "January";
else if (month.equalsIgnoreCase("Feb"))
    month = "February";
// and so on...


如果您愿意,也可以用switch表示:

switch (month.toLowerCase()) {
case "jan": month = "January"; break;
case "feb": month = "February"; break;
// and so on...
}


或者,更宽容的版本:

if (month.toLowerCase().startsWith("Jan"))
    month = "January";
// and so on...


我想您可以先将它们存储在地图中:

Map<String,String> monthNames = new HashMap<String,String>();
monthNames.put("jan", "January");
monthNames.put("feb", "February");
// and so on...

String shortMonth = "Jan";
String month = monthNames.get(shortMonth.toLowerCase());
if (month == null)
    month = shortMonth;


我想,使用地图可以让您轻松地将翻译添加到其他语言。您还可以自动将当前语言环境与Russell Zahniser's一起使用。

似乎没有太多理由将它们解析为日期和日期(尽管如果这样做,请参见newuser's answer)。

有很多方法可以做到这一点。

09-11 09:10