如何转变"字符串的集合/数组?

时间:2017-06-14 14:17:54

标签: java android

在我的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"

我不知道如何解决这个问题,不胜感激。

3 个答案:

答案 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();