/* * Copyright (c) 2013, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software;Designed and Developed mainly by many Chinese * opensource volunteers. you can redistribute it and/or modify it under the * terms of the GNU General Public License version 2 only, as published by the * Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Any questions about this component can be directed to it's project Web address * https://code.google.com/p/opencloudb/. * */ package org.opencloudb.util; /** * 格式化工具 * * @author mycat * @version 2008-11-24 下午12:58:17 */ public final class FormatUtil { // 右对齐格式化字符串 public static final int ALIGN_RIGHT = 0; // 左对齐格式化字符串 public static final int ALIGN_LEFT = 1; private static final char defaultSplitChar = ' '; private static final String[] timeFormat = new String[] { "d ", "h ", "m ", "s ", "ms" }; /** * 格式化后返回的字符串 * * @param s * 需要格式化的原始字符串,默认按左对齐。 * @param fillLength * 填充长度 * @return String */ public static String format(String s, int fillLength) { return format(s, fillLength, defaultSplitChar, ALIGN_LEFT); } /** * 格式化后返回的字符串 * * @param i * 需要格式化的数字类型,默认按右对齐。 * @param fillLength * 填充长度 * @return String */ public static String format(int i, int fillLength) { return format(Integer.toString(i), fillLength, defaultSplitChar, ALIGN_RIGHT); } /** * 格式化后返回的字符串 * * @param l * 需要格式化的数字类型,默认按右对齐。 * @param fillLength * 填充长度 * @return String */ public static String format(long l, int fillLength) { return format(Long.toString(l), fillLength, defaultSplitChar, ALIGN_RIGHT); } /** * @param s * 需要格式化的原始字符串 * @param fillLength * 填充长度 * @param fillChar * 填充的字符 * @param align * 填充方式(左边填充还是右边填充) * @return String */ public static String format(String s, int fillLength, char fillChar, int align) { if (s == null) { s = ""; } else { s = s.trim(); } int charLen = fillLength - s.length(); if (charLen > 0) { char[] fills = new char[charLen]; for (int i = 0; i < charLen; i++) { fills[i] = fillChar; } StringBuilder str = new StringBuilder(s); switch (align) { case ALIGN_RIGHT: str.insert(0, fills); break; case ALIGN_LEFT: str.append(fills); break; default: str.append(fills); } return str.toString(); } else { return s; } } /** * 格式化时间输出 * <p> * 1d 15h 4m 15s 987ms * </p> */ public static String formatTime(long millis, int precision) { long[] la = new long[5]; la[0] = (millis / 86400000);// days la[1] = (millis / 3600000) % 24;// hours la[2] = (millis / 60000) % 60;// minutes la[3] = (millis / 1000) % 60;// seconds la[4] = (millis % 1000);// ms int index = 0; for (int i = 0; i < la.length; i++) { if (la[i] != 0) { index = i; break; } } StringBuilder buf = new StringBuilder(); int validLength = la.length - index; for (int i = 0; (i < validLength && i < precision); i++) { buf.append(la[index]).append(timeFormat[index]); index++; } return buf.toString(); } }