字符处理类

来源:互联网 发布:北欧帅哥中国女孩知乎 编辑:程序博客网 时间:2024/04/29 05:30
public class StringUtils {private StringUtils() {}/** * nullと""を判定する。 *  * @param str *            チェックする項目 * @return nullと""の場合、trueを返す、以外の場合、falseを返す */public static boolean isEmpty(String str) {return TextUtils.isEmpty(str);}/** * 数字を(格式)文字列に変換する。<文字の最大桁数が指定しない><カンマ付け> *  * <pre> * <b>例、</b> * StringUtils.toFormatNumber(int, FormatType.NUMBER) * StringUtils.toFormatNumber(int, FormatType.CURRENCY) * StringUtils.toFormatNumber(int, FormatType.PERCENT) * patternの種類: * NUMBER式のフォーマット: 23323.666666666---->23,323.667  * CURRENCY式のフォーマット: 23323.666666666---->¥23,323.67  * PERCENT式のフォーマット:0.6666---->67% * </pre> *  * @param cur *            変換対象 * @param pattern *            フォーマット種別 * @return 変換された数字 */public static String toFormatNumber(int cur, FormatType pattern) {return formatNumber(String.valueOf(cur), pattern, "0.0", false);}/** * 数字を文字列に変換する。<文字の最大桁数が指定する><カンマ付け> *  * <pre> * <b>例、</b> * StringUtils.toFormatNumber(23323.666666666,FormatType.NUMBER,"5.4") * StringUtils.toFormatNumber(23323.666666666, FormatType.CURRENCY,"5.4") * StringUtils.toFormatNumber(23323.666666666, FormatType.PERCENT,"5.4") * NUMBER式のフォーマット: 23323.666666666---->23,323.6667  * CURRENCY式のフォーマット: 23323.666666666---->¥23,323.6667  * PERCENT式のフォーマット: 23323.666666666---->2,332,367% * </pre> *  * @param cur *            変換対象 * @param pattern *            フォーマット種別 * @param maxLengh *            文字の最大桁数 * @return 変換された数字 */public static String toFormatNumber(int cur, FormatType pattern,String maxLengh) {return formatNumber(String.valueOf(cur), pattern, maxLengh, false);}/** * 数字を文字列に変換する。<文字の最大桁数が指定する><カンマなし> *  * <pre> * <b>例、</b> * StringUtils.toFormatNumber(23323.666666666, FormatType.NUMBER,"5.4",true) * StringUtils.toFormatNumber(23323.666666666, FormatType.CURRENCY,"5.4",true) * StringUtils.toFormatNumber(23323.666666666, FormatType.PERCENT,"5.4",true) * NUMBER式のフォーマット: 23323.666666666---->23323.6667  * CURRENCY式のフォーマット:、 23323.666666666---->¥23323.6667  * PERCENT式のフォーマット: 23323.666666666---->2332367% * </pre> *  * @param cur *            変換対象 * @param pattern *            フォーマット種別 * @param maxLengh *            文字の最大桁数 * @param isGroupingUsed *            コンマの判定 * @return 変換された数字 */public static String toFormatNumber(int cur, FormatType pattern,String maxLengh, boolean isGroupingUsed) {return formatNumber(String.valueOf(cur), pattern, maxLengh,isGroupingUsed);}/** * 数字を(格式)文字列に変換する。<文字の最大桁数が指定しない><カンマ付け> *  * <pre> * <b>例、</b> * StringUtils.toFormatNumber(string, FormatType.NUMBER) * StringUtils.toFormatNumber(string, FormatType.CURRENCY) * StringUtils.toFormatNumber(string, FormatType.PERCENT) * patternの種類: * NUMBER式のフォーマット: 23323.666666666---->23,323.667  * CURRENCY式のフォーマット: 23323.666666666---->¥23,323.67  * PERCENT式のフォーマット:0.6666---->67% * </pre> *  * @param cur *            変換前の文字 * @param pattern *            フォーマット種別 * @return 変換された数字 */public static String toFormatNumber(String cur, FormatType pattern) {return formatNumber(cur, pattern, "0.0", false);}/** * 数字を文字列に変換する。<文字の最大桁数が指定する><カンマ付け> *  * <pre> * <b>例、</b> * StringUtils.toFormatNumber("23323.666666666",FormatType.NUMBER,"5.4") * StringUtils.toFormatNumber("23323.666666666", FormatType.CURRENCY,"5.4") * StringUtils.toFormatNumber("23323.666666666", FormatType.PERCENT,"5.4") * NUMBER式のフォーマット: 23323.666666666---->23,323.6667  * CURRENCY式のフォーマット: 23323.666666666---->¥23,323.6667  * PERCENT式のフォーマット: 23323.666666666---->2,332,367% * </pre> *  * @param cur *            変換前の文字 * @param pattern *            フォーマット種別 * @param maxLengh *            文字の最大桁数 * @return 変換された数字 */public static String toFormatNumber(String cur, FormatType pattern,String maxLengh) {return formatNumber(cur, pattern, maxLengh, false);}/** * 数字を文字列に変換する。<文字の最大桁数が指定する><カンマなし> *  * <pre> * <b>例、</b> * StringUtils.toFormatNumber("23323.666666666", FormatType.NUMBER,"5.4",true) * StringUtils.toFormatNumber("23323.666666666", FormatType.CURRENCY,"5.4",true) * StringUtils.toFormatNumber("23323.666666666", FormatType.PERCENT,"5.4",true) * NUMBER式のフォーマット: 23323.666666666---->23323.6667  * CURRENCY式のフォーマット:、 23323.666666666---->¥23323.6667  * PERCENT式のフォーマット: 23323.666666666---->2332367% * </pre> *  * @param cur *            変換前の文字 * @param pattern *            フォーマット種別 * @param maxLengh *            文字の最大桁数 * @param isGroupingUsed *            コンマの判定 * @return 変換された数字 */public static String toFormatNumber(String cur, FormatType pattern,String maxLengh, boolean isGroupingUsed) {return formatNumber(cur, pattern, maxLengh, isGroupingUsed);}private static String formatNumber(String cur, FormatType pattern,String maxLengh, boolean isGroupingUsed) {if (isEmpty(cur) == true) {return "";}String str = "";double num = Double.parseDouble(cur);NumberFormat format;switch (pattern) {case NUMBER:format = NumberFormat.getNumberInstance();str = formatMaxLengh(format, maxLengh, num, isGroupingUsed, pattern);break;case CURRENCY:format = NumberFormat.getCurrencyInstance();str = formatMaxLengh(format, maxLengh, num, isGroupingUsed, pattern);break;case PERCENT:format = NumberFormat.getPercentInstance();str = formatMaxLengh(format, maxLengh, num, isGroupingUsed, pattern);break;default:break;}return str;}private static String formatMaxLengh(NumberFormat format, String maxLengh,double num, boolean isGroupingUsed, FormatType pattern) {int integer;int fraction;String[] str = maxLengh.split("\\.");integer = Integer.valueOf(str[0]);fraction = Integer.valueOf(str[1]);if (pattern != FormatType.PERCENT) {if (0 != integer) {format.setMaximumIntegerDigits(integer);}if (0 != fraction) {format.setMaximumFractionDigits(fraction);}}if (true == isGroupingUsed) {format.setGroupingUsed(false);}return format.format(num);}/** * 金額は","を取り除く *  * <pre> * <b>例、</b> * delComma(1,234,567,890)-->1234567890 * </pre> *  * @param originalString *            金額 * @return 変換した金額 */public static String delComma(String originalString) {if (isEmpty(originalString) == true) {return "";}String formatString = "";if (originalString != null && 1 <= originalString.length()) {formatString = originalString.replaceAll(",", "");}return formatString;}/** * 文字を切り取る。 * <p> * (目標文字が空と""の場合、空を戻る。 開始位置は目標文字列の桁数を超えている場合、空を戻る。 ) * <p> *  * <pre> * <b>例、</b> * encodingString("漢aaa",0,3)-->"漢aa" * </pre> *  * @param originalString *            目標文字 * @param startIndex *            開始位置 * @param cutCount *            切り取る数量 * @return 切り取る文字 */public static String subString(String originalString, int startIndex,int cutCount) {if (isEmpty(originalString) == true) {return "";}int end = startIndex + cutCount;int originalStringLength = originalString.length() - 1;if (originalStringLength < startIndex) {return "";}if (end <= originalStringLength) {return TextUtils.substring(originalString, startIndex, end);} else {return TextUtils.substring(originalString, startIndex,originalString.length());}}/** * 左側から切り取る(切り取る桁数は目標文字列の桁数を超えている場合、目標文字列を戻る) *  * @param originalString *            目標文字列 * @param cutCount *            切り取る桁数 * @return 切り取る文字 */public static String getLeft(String originalString, int cutCount) {if (isEmpty(originalString) == true) {return "";}int originalStringLength = originalString.length();if (originalStringLength < cutCount) {return originalString;}return subString(originalString, 0, cutCount);}/** * 右側から切り取る(切り取る桁数は目標文字列の桁数を超えている場合、目標文字列を戻る) *  * @param originalString *            目標文字列 * @param cutCount *            切り取る桁数 * @return 切り取る文字 */public static String getRight(String originalString, int cutCount) {if (isEmpty(originalString) == true) {return "";}int originalStringLength = originalString.length();if (originalStringLength < cutCount) {return originalString;}int startIndex = originalStringLength - cutCount;return subString(originalString, startIndex, cutCount);}/** * 改行コードを戻る *  * @return 改行コード */public static String newLine() {String lineSeparator = System.getProperty("line.separator");return lineSeparator;}/** * 空を左側に埋め込みます。(totalWidthは目標文字列の桁数を超えている場合、目標文字列を戻る) *  * <pre> * <b>例、</b> * padLeft("a", 5)-->"    a" * </pre> *  * @param orginalString *            目標文字列 * @param totalWidth *            結果として生成される文字列の文字数。これは、元の文字数と、埋め込み文字がある場合はその数を加えた数に等しくなります。 * @return 埋まった文字列 */public static String padLeft(String orginalString, int totalWidth) {return padLeft(orginalString, totalWidth, "");}/** * 指定した キャラクターを左側に埋め込みます。(totalWidthは目標文字列の桁数を超えている場合、目標文字列を戻る) *  * <pre> * <b>例、</b> * padLeft("a", 5, "s")-->"ssssa" * </pre> *  * @param orginalString *            目標文字列 * @param totalWidth *            結果として生成される文字列の文字数。これは、元の文字数と、埋め込み文字がある場合はその数を加えた数に等しくなります。 * @param paddingChar *            埋め込み文字(首字母だけが有効である) * @return 埋まった文字列 */public static String padLeft(String orginalString, int totalWidth,CharSequence paddingChar) {if (isEmpty(orginalString) == true) {orginalString = "";}orginalString = orginalString.trim();if (totalWidth <= orginalString.length()) {return orginalString;}char chr = ' ';if (0 < paddingChar.length()) {chr = paddingChar.charAt(0);}StringBuilder d = new StringBuilder(totalWidth);int fill = totalWidth - orginalString.length();for (int i = 0; i < fill; i++) {d.append(chr);}d.append(orginalString);return d.toString();}/** * 空を右側に埋め込みます。(totalWidthは目標文字列の桁数を超えている場合、目標文字列を戻る) *  * <pre> * * <b>例、</b> * padRight("a", 5, "")-->"a    " * </pre> *  * @param orginalString *            目標文字列 * @param totalWidth *            結果として生成される文字列の文字数。これは、元の文字数と、埋め込み文字がある場合はその数を加えた数に等しくなります。 * @return 埋まった文字列 */public static String padRight(String orginalString, int totalWidth) {return padRight(orginalString, totalWidth, "");}/** * 指定した キャラクターを右側に埋め込みます。(totalWidthは目標文字列の桁数を超えている場合、目標文字列を戻る) *  * <pre> * <b>例、</b> * padRight("a", 5, "s")-->"assss" * </pre> *  * @param orginalString *            目標文字列 * @param totalWidth *            結果として生成される文字列の文字数。これは、元の文字数と、埋め込み文字がある場合はその数を加えた数に等しくなります。 * @param paddingChar *            埋め込み文字(首字母だけが有効である) * @return 埋まった文字列 */public static String padRight(String orginalString, int totalWidth,CharSequence paddingChar) {if (isEmpty(orginalString) == true) {orginalString = "";}orginalString = orginalString.trim();if (totalWidth <= orginalString.length()) {return orginalString;}char chr = ' ';if (0 < paddingChar.length()) {chr = paddingChar.charAt(0);}StringBuilder d = new StringBuilder(totalWidth);int fill = totalWidth - orginalString.length();d.append(orginalString);for (int i = 0; i < fill; i++) {d.append(chr);}return d.toString();}}
/** * Format类别 *  *  */public enum FormatType {/** * 数字23323.666666666---->23,323.667 */NUMBER,/** * 金額23323.666666666---->¥23,323.67 */CURRENCY,/** * 百分比0.6666---->67% */PERCENT}


原创粉丝点击