ひさしぶりにJava

日本語Localeだと曜日が「Fri」とかじゃなくて「金」ででるので、それを直したい。

  DateFormatSymbols symbols = new DateFormatSymbols(Locale.getDefault());
  symbols.setShortMonths(new String[]{
    "Jan","Feb","Mar","Apr","May","Jun",
    "Jul","Aug","Sep","Oct","Nov","Dec"
  });
  symbols.setShortWeekdays(new String[]{
    "","Sun","Mon","Tue","Wed","Thu","Fri","Sat"
  });
		
  DateFormat df = new SimpleDateFormat("yyyy MM MMM dd E HH mm ss z",symbols);

  for(String i : df.format(new Date()).split(" ")){
    System.out.println(i);
  }

あとString.replace(regex_str,replace_str)でreplace_strに$が入っているとうまく処理できないのがきもい。
いわゆるgsubはappendReplacementではなく以下のような書き方がたぶん安全。

  StringBuffer buf = new StringBuffer();
  Matcher m = Pattern.compile(pattern).matcher(source);
  while(m.find()){
    String replace = "$....";// matchした文字に対して変換する文字
    m.appendReplacement(buf,"");//appendReplacementで$入りの文字を指定すると例外発生。m.end()を進めるために空文字列で置換しておく
    buf.append(replace);
  }
  m.appendTail(buf);
  buf.toString();