ひさしぶりに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();