package com.konka.music.util;
import java.text.DecimalFormat;
/**
* @author lq 2013-6-1 lq2625304@gmail.com
* */
public class StringHelper {
public static enum CharType {
DELIMITER, // 非字母截止字符,例如,.)( 等等 ( 包含U0000-U0080)
NUM, // 2字节数字1234
LETTER, // gb2312中的,例如:ABC,2字节字符同时包含 1字节能表示的 basic latin and latin-1
OTHER, // 其他字符
CHINESE;// 中文字
}
/**
* 判断输入char类型变量的字符类型
*
* @param c
* char类型变量
* @return CharType 字符类型
*/
public static CharType checkType(char c) {
CharType ct = null;
// 中文,编码区间0x4e00-0x9fbb
if ((c >= 0x4e00) && (c <= 0x9fbb)) {
ct = CharType.CHINESE;
}
// Halfwidth and Fullwidth Forms, 编码区间0xff00-0xffef
else if ((c >= 0xff00) && (c <= 0xffef)) { // 2字节英文字
if (((c >= 0xff21) && (c <= 0xff3a))
|| ((c >= 0xff41) && (c <= 0xff5a))) {
ct = CharType.LETTER;
}
// 2字节数字
else if ((c >= 0xff10) && (c <= 0xff19)) {
ct = CharType.NUM;
}
// 其他字符,可以认为是标点符号
else
ct = CharType.DELIMITER;
}
// basic latin,编码区间 0000-007f
else if ((c >= 0x0021) && (c <= 0x007e)) { // 1字节数字
if ((c >= 0x0030) && (c <= 0x0039)) {
ct = CharType.NUM;
} // 1字节字符
else if (((c >= 0x0041) && (c <= 0x005a))
|| ((c >= 0x0061) && (c <= 0x007a))) {
ct = CharType.LETTER;
}
// 其他字符,可以认为是标点符号
else
ct = CharType.DELIMITER;
}
// latin-1,编码区间0080-00ff
else if ((c >= 0x00a1) && (c <= 0x00ff)) {
if ((c >= 0x00c0) && (c <= 0x00ff)) {
ct = CharType.LETTER;
} else
ct = CharType.DELIMITER;
} else
ct = CharType.OTHER;
return ct;
}
/**
* 获取给定汉字的拼音的首字母
*
* @param c
* 一个汉字
* @return 如果c不是汉字,返回0;否则返回该汉字的拼音的首字母
*/
// public static char getPinyinFirstLetter(char c) {
// String[] pinyin = null;
// HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不输出声调
// try {
// // 获取该汉字的拼音(可能是多音字,所以用数组存放结果)
// pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
// } catch (BadHanyuPinyinOutputFormatCombination e) {
// e.printStackTrace();
// }
//
// // 如果c不是汉字,toHanyuPinyinStringArray会返回null
// if (pinyin == null) {
// return 0;
// }
//
// // 只取一个发音,如果是多音字,仅取第一个发音
// return pinyin[0].charAt(0);
// }
public static String bytesToMB(long bytes) {
float size = (float) (bytes * 1.0 / 1024 / 1024);
String result = null;
if (bytes >= (1024 * 1024)) {
result = new DecimalFormat("###.00").format(size) + "MB";
} else {
result = new DecimalFormat("0.00").format(size) + "MB";
}
return result;
}
/**
* 将字符串中的中文转化为拼音,其他字符不变
*
* @param inputString
* @return
*/
// public static String getPingYin(String inputString) {
// if (TextUtils.isEmpty(inputString)) {
// return "";
// }
// HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// format.setVCharType(HanyuPinyinVCharType.WITH_V);
//
// char[] input = inputString.trim().toCharArray();
// String output = "";
//
// try {
// for (int i = 0; i < input.length; i++) {
// if (java.lang.Character.toString(input[i]).matches(
// "[\\u4E00-\\u9FA5]+")) {
// String[] temp = PinyinHelper.toHanyuPinyinStringArray(
// input[i], format);
// if (temp == null || TextUtils.isEmpty(temp[0])) {
// continue;
// }
// output += temp[0].replaceFirst(temp[0].substring(0, 1),
// temp[0].substring(0, 1).toUpperCase());
// } else
// output += java.lang.Character.toString(input[i]);
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// return output;
// }
public static String generateTime(long time) {
int totalSeconds = (int) (time / 1000);
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = totalSeconds / 3600;
return hours > 0 ? String.format("%02d:%02d:%02d", hours, minutes, seconds) : String.format("%02d:%02d", minutes, seconds);
}
}