package com.code2roc.fastface.util; import org.apache.commons.lang3.text.StrBuilder; import java.io.File; import java.util.regex.Pattern; public class StringUtil { public static boolean isEmpty(String str) { return str == null || "".equals(str) || "null".equals(str); } public static String padLeft(String src, int len, char ch) { int diff = len - src.length(); if (diff <= 0) { return src; } char[] charr = new char[len]; System.arraycopy(src.toCharArray(), 0, charr, diff, src.length()); for (int i = 0; i < diff; i++) { charr[i] = ch; } return new String(charr); } public static String uncapitalize(String str) { int strLen; return str != null && (strLen = str.length()) != 0 ? (new StrBuilder(strLen)).append(Character.toLowerCase(str.charAt(0))).append(str.substring(1)).toString() : str; } public static String getConverPath(String path) { return path.replaceAll("\\.", "\\\\") + File.separator; } //通过正则表达式判断是否是英文字母和数字加下划线和中文 public static boolean checkIsOnlyContainCharAndNum(String content) { content = content.replace("_", ""); String regex = "^[a-zA-Z0-9_-\u4e00-\u9fa5]*$"; return Pattern.matches(regex, content); } //判断关键字后面是否是某个特定的字符 public static boolean checkFlowChar(String content, String keyword, String followchar, boolean CheckPostfixIsEmpty) { int index = content.indexOf(keyword); while (index >= 0) { if ((index + keyword.length()) >= content.length()) // 如果关键字是最后一个字,没有后续字符 return false; if ((index + keyword.length() + followchar.length()) > content.length()) // 如果关键字后面的字符串不够后续字符串程度 return false; String followchar1 = subString(content,index + keyword.length(), followchar.length()); if (followchar.equals(followchar1)) { if (CheckPostfixIsEmpty) { if (index == 0)// 第一个字符就是关键字 return true; else if (subString(content,index - 1, 1) == " ") // 关键字前面是 return true; else if (subString(content,index - CommonUtil.getNewLine().length(), CommonUtil.getNewLine().length()) == CommonUtil.getNewLine()) // 关键字前面是回车 return true; } else { return true; } } index = content.indexOf(keyword, index + keyword.length()); } return false; } //判断Key前面和后面是否是英文字符 public static boolean checkBeforAfterChar(String Source, String Key) { if (StringUtil.isEmpty(Source) || StringUtil.isEmpty(Key)) return true; int index = Source.indexOf(Key); while (index >= 0) { if (index == 0) { if (!checkIsEnglishChar(Source.toCharArray()[Key.length()])) { return false; } } else if (index == Source.length() - Key.length()) { if (!checkIsEnglishChar(Source.toCharArray()[index - 1])) { return false; } } else { if (!checkIsEnglishChar(Source.toCharArray()[index - 1]) || !checkIsEnglishChar(Source.toCharArray()[index + Key.length()])) { return false; } } Source = Source.substring(index + Key.length()); index = Source.indexOf(Key); } return true; } //判断是否是英文字母 public static boolean checkIsEnglishChar(char c) { if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) return true; else return false; } //截取字符串 public static String subString(String source, int startIndex, int length) { return source.substring(startIndex, startIndex + length); } public static String replaceLast(String text, String regex, String newStr) { return text.replaceFirst("(?s)" + regex + "(?!.*?" + regex + ")", newStr); } }