読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

全角・半角 trim

Java

Stringのtrimでは全角が除去できないので、全角も除去できるようにしてみた

/**
 * 文字列処理クラス
 *
 */
public class StringUtil {

    /** 半角スペース */
    private static final char SPACE_CHAR_HALF = ' ';

    /** 全角スペース */
    private static final char SPACE_CHAR_WID = ' ';

    /**
     * 両端の空白(全角・半角)を除去します。
     *
     * @param value 対象文字列
     * @return trim後文字列
     */
    public static String trim(String value) {
        return ltrim(rtrim(value));
    }

    /**
     * 左側の空白(全角・半角)を除去します。
     *
     * @param value 対象文字列
     * @return 編集後文字列
     */
    public static String ltrim(String value) {

        if (value == null || value.equals("")) {
            return value;
        }

        int pos = 0;

        for (int i = 0; i < value.length(); i++) {
            char c = value.charAt(i);
            if (c != SPACE_CHAR_HALF && c != SPACE_CHAR_WID) {
                break;
            }
            pos = i + 1;
        }

        if (pos > 0) {
            return value.substring(pos);
        } else {
            return value;
        }

    }

    /**
     * 右側の空白(全角・半角)を除去します。
     *
     * @param value 対象文字列
     * @return 編集後文字列
     */
    public static String rtrim(String value) {

        if (value == null || value.equals("")) {
            return value;
        }

        int pos = 0;

        for (int i = value.length() - 1; i >= 0; i--) {
            char c = value.charAt(i);
            if (c != SPACE_CHAR_HALF && c != SPACE_CHAR_WID) {
                break;
            }
            pos = i;
        }

        if (pos > 0) {
            return value.substring(0, pos);
        } else {
            return value;
        }

    }

}

処理自体は結構単純で

全角・半角の空白かを左か右から探していって、空白以外が始まる箇所を見つける

その後にsubStringで切り出してるだけ

左側と右側のメソッド分けてあるから、左側だけtrimしたい場合も使える


あんまり使うことがないかもしれないけど、あると便利かもってことで