ApacheCommonsとGsonが必要なところがあります。
public class StringUtil { /** * パラメータを3桁カンマ区切り数字として返す。 * @param number 処理対象文字列 * @return フォーマット後文字列 */ public static String formatComma(String number) { if (!NumberUtils.isCreatable(number)) { return number; } NumberFormat nfNum = NumberFormat.getNumberInstance(); return nfNum.format(Double.parseDouble(number)); } /** * パラメータの文字列を、パラメータの最大文字数で切って返す。 * * nullの場合ブランクを返す。 * 文字数以内の場合文字列をそのまま返す。 * 指定文字数を超える場合は文字数で切った文字列を返す。 * * @param target 処理対象文字列 * @param length 文字数 * @return 処理後文字列 */ public static String split(String target, int length) { String res = null; if (StringUtils.isEmpty(target)) { res = ""; } else if (target.length() > length) { res = target.substring(0, length); } else { res = target; } return res; } /** * 引数の文字列をSHA-256で暗号化して、16進数エンコードする。 * ※base64でもエンコード出来るが、その場合、文字数が64文字以下になる。 * @param pass * @return */ public static String encode(String pass) { MessageDigest md = null; try { md = MessageDigest.getInstance("SHA-256"); } catch (NoSuchAlgorithmException e) {// 発生しない e.printStackTrace(); } md.update(pass.getBytes()); byte[] digest = md.digest(); // 16 進数文字列として出力 StringBuilder sb = new StringBuilder(); for(byte b : digest) { String hex = String.format("%02x", b); // 16 進数 2 桁として表示 (1byte は 00 ~ ff) sb.append(hex); } String result = sb.toString(); if (result.length() > 64) { result = result.substring(0, 64); } return result; } /** * ランダムな32文字の文字列を生成する。 * CSRF攻撃対策用のトークンとして使用する。 * @return */ public static String getRandomToken() { SecureRandom random = new SecureRandom(); byte bytes[] = new byte[32]; random.nextBytes(bytes); // 16 進数文字列として出力 StringBuilder sb = new StringBuilder(); for(byte b : bytes) { String hex = String.format("%02x", b); // 16 進数 2 桁として表示 (1byte は 00 ~ ff) sb.append(hex); } String result = sb.toString(); if (result.length() > 32) { result = result.substring(0, 32); } return result; } /** * ランダムな文字列を生成する。 * 文字列に記号を含めるため、base64でエンコードする。 * パスワードを生成するために使用する。 * @param num 文字数 * @return 生成したパスワード */ public static String getRandomPass(int num) { SecureRandom random = new SecureRandom(); byte bytes[] = new byte[32]; random.nextBytes(bytes); String encoded = Base64.getEncoder().encodeToString(bytes); String result = ""; if (num <= 32) { result = encoded.substring(0, num); } else { result = encoded.substring(0, 32); } return result; } /** * 数値を指定の桁で0埋めする * @param num 処理対象数値 * @param digit 桁数 * @return 0埋め後文字列 */ public static String padZero(int num, int digit) { return String.format("%0" + digit +"d", num); } /** * 指定の桁までスペース埋めする * @param str 処理対象文字列 * @param digit 桁数 * @return スペース埋め後文字列 */ public static String padSpace(String str, int digit) { return String.format("%" + digit +"s", str); } /** * 数字の頭の0を除去する * @param str 処理対象文字列 * @return 0除去後文字列 */ public static String ltrimZero(String str) { return str.replaceFirst("^0+", ""); } /** * 文字列の頭のスペースを除去する * @param str 処理対象文字列 * @return スペース除去後文字列 */ public static String ltrim(String str) { return str.replaceFirst("^ +", ""); } /** * 文字列の後ろのスペースを除去する * @param str 処理対象文字列 * @return スペース除去後文字列 */ public static String rtrim(String str) { return str.replaceFirst(" +$", ""); } /** * JSON文字列からMapを生成 * @param json JSON文字列 * @return Map */ public static Map<String, String> createMapFromJson(String json) { Gson gson = new Gson(); Type listType = new TypeToken<HashMap<String, String>>() { }. getType(); HashMap<String, String> map = gson.fromJson(json, listType); return map; } /** * MapからJSON文字列を生成 * @param map Map * @return JSON文字列 */ public static String createJsonFromMap(Map<String, String> map) { Gson gson = new Gson(); return gson.toJson(map); } /** * パラメータ1がnullの場合はパラメータ2を返す(SQLのNVLと同じ) * @param val1 検査対象文字列 * @param val2 パラメータ1がnullの時に返す文字列 * @return 判定後パラメータ1OR2 */ public static String nvl(String val1, String val2) { if (val1 == null) { return val2; } else { return val1; } } }
0 件のコメント:
コメントを投稿