在我的Android应用中,我通过从String
课程中的数字表示创建Calendar
,在数据库中存储一周中的几天。
例如:
"1234567"
"23"
"246"
等
我想创建一种方法,将这些String
格式化为以下格式:
"1234567"
,格式为String
:"Mon Tue Wen Thu Fri Sat Sun"
"246"
,格式为String
:"Mon Wen Fri"
所以我想出了以下方法:
// input is "1234567" for example
public static String formatDays(String input) {
List<String> dayStringList = new ArrayList<>(input.length());
char[] days = input.toCharArray();
for (char day : days) {
dayStringList.add(DAY_MAP.get(Character.getNumericValue(day)));
}
return TextUtils.join(" ", dayStringList);
}
DAY_MAP
看起来像这样:
Map<Integer, String> map = new HashMap<>(7);
map.put(Calendar.MONDAY, "Mon");
map.put(Calendar.TUESDAY, "Tue");
map.put(Calendar.WEDNESDAY, "Wed");
map.put(Calendar.THURSDAY, "Thu");
map.put(Calendar.FRIDAY, "Fri");
map.put(Calendar.SATURDAY, "Sat");
map.put(Calendar.SUNDAY, "Sun");
DAY_MAP = Collections.unmodifiableMap(map);
这很好用。
我的问题是Calendar
中星期日的代表1
,例如,对于值"1234567"
,我得到以下内容格式化String
:
"Sun Mon Tue Wen Thu Fri Sat"
而不是以下内容:
"Mon Tue Wen Thu Fri Sat Sun"
我不知道如何解决这个问题,不胜感激。
答案 0 :(得分:2)
只需将您的地图更改为:
map.put(Calendar.MONDAY - 1, "Mon");
map.put(Calendar.TUESDAY - 1, "Tue");
map.put(Calendar.WEDNESDAY - 1, "Wed");
map.put(Calendar.THURSDAY - 1, "Thu");
map.put(Calendar.FRIDAY - 1, "Fri");
map.put(Calendar.SATURDAY - 1, "Sat");
map.put(Calendar.SUNDAY + 6, "Sun");
答案 1 :(得分:0)
将您的行更改为:
dayStringList.add(DAY_MAP.get((Character.getNumericValue(day)%7)+1));
答案 2 :(得分:0)
yourString.replaceAll("1", "Mon ");
yourString.replaceAll("2", "Tue ");
yourString.replaceAll("3", "Wed ");
yourString.replaceAll("4", "Thu ");
yourString.replaceAll("5", "Fri ");
yourString.replaceAll("6", "Sat ");
yourString.replaceAll("7", "Sun ");
yourString.trim();