1 /* $Id: StringUtils.java 249 2011-02-01 14:28:42Z dobashi $
\r
2 * created: 2005/08/10
\r
4 package com.lavans.luz2.commons;
\r
8 * commonsのStringUtils拡張クラス
\r
9 * TODO commonsと似たようなメソッドの整理
\r
11 * @see http://commons.apache.org/lang/api-release/index.html
\r
14 public class StringUtils extends org.apache.commons.lang.StringUtils{
\r
16 // private static Log logger = LogFactory.getLog(StringUtil.class.getName());
\r
19 * 意味区切りアンダーバーを大文字に変換。 customer_id -> customerId.
\r
24 public static String toCamelCase(String str) {
\r
26 if(isEmpty(str)) return str;
\r
28 // all letters shoud be lowered
\r
29 str = str.toLowerCase();
\r
31 StringBuffer buf = new StringBuffer(str.length());
\r
32 String[] token = str.split("_");
\r
33 buf.append(token[0]);
\r
34 // 2語目以降は最初の文字を大文字にして追加。
\r
35 for (int i = 1; i < token.length; i++) {
\r
36 buf.append(capitalize(token[i]));
\r
38 return buf.toString();
\r
42 * 意味区切り大文字をアンダーバーに変換。 customerId -> customer_id
\r
43 * 一文字目が大文字の場合は小文字にするだけ。
\r
47 public static String toUnderscore(String str) {
\r
49 if(isEmpty(str)) return str;
\r
51 // toLower first letter.
\r
52 if(Character.isUpperCase(str.charAt(0))){
\r
53 str = uncapitalize(str);
\r
56 // change upper case to underscore
\r
57 StringBuffer buf = new StringBuffer(str.length());
\r
58 for(char ch: str.toCharArray()){
\r
59 if(Character.isUpperCase(ch)){
\r
60 buf.append("_").append(Character.toLowerCase(ch));
\r
65 return buf.toString();
\r
75 public static String indent(String str, int indent){
\r
76 StringBuffer buf = new StringBuffer(str.length());
\r
77 String[] lines = str.split("\n");
\r
78 for(String line: lines){
\r
79 buf.append(repeat("\t", indent)).append(line).append("\n");
\r
82 return buf.toString();
\r
86 * String配列をカンマ区切り文字列に変換。クオート付き。
\r
93 public static String joinQuote(String strs[], String delim, String quote) {
\r
94 StringBuffer buf = new StringBuffer();
\r
95 for (int i = 0; i < strs.length; i++) {
\r
96 if(org.apache.commons.lang.StringUtils.isEmpty(strs[i])){
\r
99 buf.append(delim + quote + strs[i] + quote);
\r
102 if(buf.length()==0){
\r
105 return buf.substring(delim.length());
\r
110 * splitした各itemをtrim()して返す。
\r
115 public static String[] splitTrim(String str, String delim) {
\r
117 return new String[0];
\r
119 String strs[] = str.split(delim);
\r
120 for (int i = 0; i < strs.length; i++) {
\r
121 strs[i] = strs[i].trim();
\r
127 * バイト配列を16進数の文字列にする。
\r
134 public static String toHex(byte[] b, String delim) {
\r
135 StringBuffer buf = new StringBuffer(b.length);
\r
136 for (int i = 0; i < b.length; i++) {
\r
137 int c = b[i] & 0xFF;
\r
138 String hex = Integer.toHexString(c);
\r
139 if (hex.length() == 1)
\r
141 buf.append(delim + hex);
\r
144 return buf.substring(delim.length());
\r
148 * 16進数テキストをバイト配列に変換する。 toHex()の逆。
\r
154 public static byte[] toByte(String str, String delim) {
\r
155 int tokenLength = 2 + delim.length();
\r
156 byte[] b = new byte[(str.length() + delim.length()) / tokenLength];
\r
157 for (int i = 0; i < b.length; i++) {
\r
158 b[i] = (byte) Integer.parseInt(str.substring(i * tokenLength, i * tokenLength + 2), 16);
\r