/**
* 获取系统字体对应全路径Map
* @return Map
*/
public static Map<String, String> getFontPathMap() {
TreeMap<String, String> fontPathMap = new TreeMap<String, String>();
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
Font[] fonts = ge.getAllFonts();
if (fonts == null || fonts.length < 1) {
return fontPathMap;
}
for (Font font : fonts) {
// 获取TrueType 字体文件 (.ttf)路径;
/* 完整路径 值可能为(C:\Windows\Fonts\D:\Program Files\Mindjet\MindManager 9\jre\lib\fonts\LucidaTypewriterBold.ttf)
* 可能因为字体的实际位置不在C盘;则只取其实际位置绝对路径
*/
String fontFilePath = FontManager.getFontPath(true)
+ File.separator
+ FontManager.getFileNameForFontName(font.getFontName());
if (StringUtil.isNullOrEmpty(font.getFontName())
|| StringUtil.isNullOrEmpty(FontManager.getFileNameForFontName(font.getFontName()))
|| StringUtil.isNullOrEmpty(fontFilePath)
|| fontFilePath.indexOf(":") == -1) {
continue;
}
if (StringUtil.stringRepeatNum(fontFilePath, ":") > 1) {
fontFilePath = fontFilePath.substring(fontFilePath.lastIndexOf(":")-1);
}
fontPathMap.put(font.getFontName(), fontFilePath);
}
return fontPathMap.descendingMap(); // 倒序
}
// StringUtil
public class StringUtil {
/**
* 判断是否为空或是空字符串,如果为null或为“”返回true
*
* @param str
* @return
*/
public static boolean isNullOrEmpty(String str) {
if (null == str || "".equalsIgnoreCase(str.trim()) || "null".equals(str.trim())) {
return true;
}
return false;
}
public static boolean isNotNullOrEmpty(String str) {
if (null != str && !"".equalsIgnoreCase(str.trim()) && !"null".equals(str.trim())) {
return true;
}
return false;
}
/**
* 验证只有字母、数字和下划线且不能以下划线开头和结尾
* @param str
* @return boolean
*/
public static boolean alphanumeric(String str) {
Pattern pattern = Pattern.compile("^(?!_)(?!.*?_$)[a-zA-Z0-9_]+$");
return pattern.matcher(str).matches();
}
/**
* 截取字符串
*
* @param str
* @param size
* @return
*/
public synchronized static String splitString(String str, int size) {
if (StringUtil.isNullOrEmpty(str)) {
return "";
}
if (str.length() > size) {
return str.substring(0, size) + "...";
}
return str;
}
/**
* 从ISO8859-1转换为utf-8
*
* @param str
* @return
*/
public synchronized static String convert2UTF8FromIOS8859_1(String str) {
if (isNullOrEmpty(str)) {
return str;
}
try {
return new String(str.getBytes("ISO8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
/**
* 从utf-8转换为ISO8859-1
*
* @param str
* @return
*/
public synchronized static String convert2ISO8859_1FromUTF8(String str) {
if (isNullOrEmpty(str)) {
return str;
}
try {
return new String(str.getBytes("UTF-8"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
/**
* 判断字符串是否是正整数
*
* @param str
* @return
*/
public static boolean isPositiveInteger(String str) {
if(isNullOrEmpty(str)){
return false;
}
return str.matches("[0-9]*");
}
/**
* 得到一个字符串,在另一个字符串中重复出现的次数,区分大小写
*
* @param str
* 原字符串
* @param temp
* 计算重复出现的字符串
* @return
*/
public static int stringRepeatNum(String str, String temp) {
Pattern p = Pattern.compile(temp);
Matcher m = p.matcher(str);
int i = 0;
while (m.find()) {
i++;
}
return i;
}
/**
* 根据values值依次替换字符串中的temp选项,区分大小写
* @param str 原字符串
* @param temp 被替换的参数
* @param values 替换值
* @return 返回替换后的字符串
*/
public static String replaceStringByValues(String str,String temp,String...values){
if(values==null)
return str;
Pattern p = Pattern.compile(temp);
Matcher m = p.matcher(str);
int i = 0;
while (m.find()) {
if(StringUtil.isNullOrEmpty(values[i]))
str = str.replaceFirst(temp,"");
else{
str = str.replaceFirst(temp,values[i]);
i++;
if(i>=values.length)
break;
}
}
return str;
}
/**
* 判断一个字符串数组里是否包含某个字符串
* @param temps
* @param str
* @return 包含返回true,不包含返回false
*/
public static boolean isContainsStr(String [] temps,String str){
if(StringUtil.isNullOrEmpty(str))
return false;
if(temps==null)
return false;
for (String string : temps) {
if(str.equals(string))
return true;
}
return false;
}
}