public class StringUtils {
/**
* 如果str为null,返回“”,否则返回str
* @param str
* @return
*/
public static String isNull(String str) {
if (str == null) {
return "";
}
return str.trim();
}
public static String isNull(Object o) {
if (o == null) {
return "";
}
String str="";
if(o instanceof String){
str=(String)o;
}else{
str=o.toString();
}
return str;
}
/**
* 检验手机号
* @param phone
* @return
*/
public static boolean isPhone(String phone){
phone = isNull(phone);
Pattern regex = Pattern
// .compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");
.compile("^((1[34578]{1}[0-9]))\\d{8}$");
Matcher matcher = regex.matcher(phone);
boolean isMatched = matcher.matches();
return isMatched;
}
/**
* 检查是否全中文,返回true 表示是 反之为否
* @param realname
* @return
*/
public static boolean isChinese(String realname){
realname = isNull(realname);
Pattern regex = Pattern.compile("[\\u4e00-\\u9fa5]{2,25}");
Matcher matcher = regex.matcher(realname);
boolean isMatched = matcher.matches();
return isMatched;
}
/**
* 检查email是否是邮箱格式,返回true表示是,反之为否
* @param email
* @return
*/
public static boolean isEmail(String email) {
email = isNull(email);
Pattern regex = Pattern
.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
Matcher matcher = regex.matcher(email);
boolean isMatched = matcher.matches();
return isMatched;
}
/**
* 检查身份证的格式,返回true表示是,反之为否
* @param email
* @return
*/
public static boolean isCard(String cardId) {
cardId = isNull(cardId);
//身份证正则表达式(15位)
Pattern isIDCard1=Pattern.compile("^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$");
//身份证正则表达式(18位)
Pattern isIDCard2=Pattern.compile("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$");
Matcher matcher1= isIDCard1.matcher(cardId);
Matcher matcher2= isIDCard2.matcher(cardId);
boolean isMatched = matcher1.matches()||matcher2.matches();
return isMatched;
}
/**
* 判断字符串是否为整数
* @param str
* @return
*/
public static boolean isInteger(String str) {
if (isEmpty(str)) {
return false;
}
Pattern regex = Pattern.compile("\\d*");
Matcher matcher = regex.matcher(str);
boolean isMatched = matcher.matches();
return isMatched;
}
/**
* 判断字符串是否为数字
* @param str
* @return
*/
public static boolean isNumber(String str) {
if (isEmpty(str)) {
return false;
}
Pattern regex = Pattern.compile("(-)?\\d*(.\\d*)?");
Matcher matcher = regex.matcher(str);
boolean isMatched = matcher.matches();
return isMatched;
}
/**
* 判断字符串是否为纯字母
* @param str
* @return
*/
public static boolean isEnglish(String str) {
if (isEmpty(str)) {
return false;
}
Pattern regex = Pattern.compile("[a-zA-Z]{1,}");
Matcher matcher = regex.matcher(str);
boolean isMatched = matcher.matches();
return isMatched;
}
/**
* 判断字符串是否为空
* @param str
* @return
*/
public static boolean isEmpty(String str) {
if (str == null || "".equals(str)) {
return true;
}
return false;
}
/**
* 首字母大写
* @param s
* @return
*/
public static String firstCharUpperCase(String s) {
StringBuffer sb = new StringBuffer(s.substring(0, 1).toUpperCase());
sb.append(s.substring(1, s.length()));
return sb.toString();
}
public static String hideChar(String str,int len){
if(str==null) return null;
char[] chars=str.toCharArray();
for(int i=1;i<chars.length-1;i++){
if(i<len){
chars[i]='*';
}
}
str=new String(chars);
return str;
}
public static String hideFirstChar(String str,int len){
if(str==null) return null;
char[] chars=str.toCharArray();
if(str.length()<=len){
for(int i=0;i<1;i++){
chars[i]='*';
}
}else{
for(int i=0;i<len;i++){
chars[i]='*';
}
}
str=new String(chars);
return str;
}
public static String hideLastChar(String str,int len){
if(str==null) return null;
char[] chars=str.toCharArray();
if(str.length()<=len){
for(int i=0;i<chars.length;i++){
chars[i]='*';
}
}else{
for(int i=chars.length-1;i>chars.length-len-1;i--){
chars[i]='*';
}
}
str=new String(chars);
return str;
}
public static String hideNumber(String str){
if(str==null) return null;
char[] chars=str.toCharArray();
if(str.length()<=7){
for(int i=0;i<chars.length;i++){
chars[i]='*';
}
}else{
for(int i=3;i<chars.length-4;i++){
chars[i]='*';
}
}
str=new String(chars);
return str;
}
/**
*
* @return
*/
public static String format(String str,int len){
if(str==null) return "-";
if(str.length()<=len){
int pushlen=len-str.length();
StringBuffer sb=new StringBuffer();
for(int i=0;i<pushlen;i++){
sb.append("0");
}
sb.append(str);
str=sb.toString();
}else{
String newStr=str.substring(0, len);
str=newStr;
}
return str;
}
public static String contact(Object[] args){
StringBuffer sb=new StringBuffer();
for(int i=0;i<args.length;i++){
sb.append(args[i]);
if(i<args.length-1){
sb.append(",");
}
}
return sb.toString();
}
/**
* 是否包含在以“,”隔开字符串内
* @param s
* @param type
* @return
*/
public static boolean isInSplit(String s,String type){
if(isNull(s).equals("")){
return false;
}
List<String> list=Arrays.asList(s.split(","));
if(list.contains(type)){
return true;
}
return false;
}
public static boolean isBlank(String str){
return StringUtils.isNull(str).equals("");
}
public synchronized static String generateTradeNO(long userid,String type){
String s;
s = type + userid + getFullTimeStr();
return s;
}
public static String getFullTimeStr(){
String s=DateUtils.dateStr3(Calendar.getInstance().getTime());
return s;
}
public static String array2Str(Object[] arr){
StringBuffer s=new StringBuffer();
for(int i=0;i<arr.length;i++){
s.append(arr[i]);
if(i<arr.length-1){
s.append(",");
}
}
return s.toString();
}
public static String array2Str(int[] arr){
StringBuffer s=new StringBuffer();
for(int i=0;i<arr.length;i++){
s.append(arr[i]);
if(i<arr.length-1){
s.append(",");
}
}
return s.toString();
}
/**
* 指定起始位置字符串隐藏
* @param str
* @param index1
* @param index2
* @return
*/
public static String hideStr(String str, int index1, int index2) {
if (str == null)
return null;
String str1 = str.substring(index1, index2);
String str2 = str.substring(index2);
String str3 = "";
if (index1 > 0) {
str1 = str.substring(0, index1);
str2 = str.substring(index1, index2);
str3 = str.substring(index2);
}
char[] chars = str2.toCharArray();
for (int i = 0; i < chars.length; i++) {
chars[i] = '*';
}
str2 = new String(chars);
String str4 = str1 + str2 + str3;
return str4;
}
// 四舍五入保留两位小数点
public static String SetNumberFractionDigits(String str) {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
return nf.format(Float.valueOf(str));
}
public static String getMonday(String the_rq){
int n=getXC_days(the_rq);
//System.out.println("n="+n);
n=n*-1;
return Q_N_Day(n,the_rq);
}
//获取输入日期的星期天日期
public static String getSunday(String the_rq){
int n=getXC_days(the_rq);
//System.out.println("n="+n);
n=(6-(n*-1))*-1;
return Q_N_Day(n,the_rq);
}
// 获得输入日期与本周一相差的天数
public static int getXC_days(String rq){
SimpleDateFormat formatYMD=new SimpleDateFormat("yyyy-MM-dd");//formatYMD表示的是yyyy-MM-dd格式
SimpleDateFormat formatD=new SimpleDateFormat("E");//"E"表示"day in week"
Date d=null;
String weekDay="";
int xcrq=0;
try{
d=formatYMD.parse(rq);//将String 转换为符合格式的日期
weekDay=formatD.format(d);
if(weekDay.equals("星期一")){
xcrq=0;
}else{
if(weekDay.equals("星期二")){
xcrq=-1;
}else{
if(weekDay.equals("星期三")){
xcrq=-2;
}else{
if(weekDay.equals("星期四")){
xcrq=-3;
}else{
if(weekDay.equals("星期五")){
xcrq=-4;
}else{
if(weekDay.equals("星期六")){
xcrq=-5;
}else{
if(weekDay.equals("星期日")){
xcrq=-6;
}
}
}
}
}
}
}
}catch (Exception e){
e.printStackTrace();
}
return xcrq;
}
public static String Q_N_Day(int N,String d1){//
String []d2=d1.split("-");
int year=Integer.parseInt(d2[0]);
int month=Integer.parseInt(d2[1]);
int day=Integer.parseInt(d2[2]);
if(day-N<=0){
if(month==1){
year=year-1;
month=12;
day = day + 31-N;
}else{
month=month-1;
if (month == 2) {
if (year % 4 == 0) {
day = day + 29-N;
} else {
day = day + 28-N;
}
}else{
if(month==4||month==6||month==9||month==11){
day=day+30-N;
}else{
day=day+31-N;
}
}
}
}else{
///
if(month==12){
if((day-N)>31){
year=year+1;
month=1;
day=(day-N)-31;
}else{
day=day-N;
}
}else{
if (month == 2) {
if (year % 4 == 0) {
if((day-N)>29){
month++;
day=(day-N)-29;
}else{
day=day-N;
}
} else {
if((day-N)>28){
month++;
day=(day-N)-28;
}else{
day=day-N;
}
}
}else{
if(month==4||month==6||month==9||month==11){
if((day-N)>30){
month++;
day=(day-N)-30;
}else{
day=day-N;
}
}else{
if((day-N)>31){
month++;
day=(day-N)-31;
}else{
day=day-N;
}
}
}
}
//day=day-N;
}
String str=String.valueOf(year);
if(month<10){
str=str+"-0"+String.valueOf(month);
}else{
str=str+"-"+String.valueOf(month);
}
if(day<10){
str=str+"-0"+String.valueOf(day);
}else{
str=str+"-"+String.valueOf(day);
}
return str;
}
/*public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 设置日期格式
String mondayString=StringUtils.getMonday(df.format(new Date()))+ " 00:00:00";
String sumdayString=StringUtils.getSunday(df.format(new Date()))+ " 23:59:59";
String monday=DateUtils.getTime(mondayString)+"";
String sumday=DateUtils.getTime(sumdayString)+"";
//System.out.println(monday);
//System.out.println(sumday);
}*/
public static String fillTemplet(String templet, String phstr, String[] paras){
StringBuffer templetSB = new StringBuffer(templet);
int i = 0;
while(templetSB.indexOf(phstr) >= 0 && i < paras.length){
templetSB.replace(templetSB.indexOf(phstr), templetSB.indexOf(phstr)+phstr.length(), paras[i]);
i++;
}
return templetSB.toString();
}
//V1.6.6.1 RDPROJECT-226 liukun 2013-09-26 start
/*public static String fillTemplet(String template){
//V1.6.6.1 RDPROJECT-331 liukun 2013-10-12 start
//模板中的'是非法字符,会导致无法提交,所以页面上用`代替
template = template.replace('`', '\'');
//V1.6.6.1 RDPROJECT-331 liukun 2013-10-12 end
Map<String,Object> data=Global.getTransfer();
try {
return FreemarkerUtil.renderTemplate(template, data);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}*/
//V1.6.6.1 RDPROJECT-226 liukun 2013-09-26 end
//V1.6.5.3 RDPROJECT-142 liukun 2013-09-11 start
public static int[] strarr2intarr(String[] strarr){
int[] result = new int[strarr.length];
for(int i=0;i<strarr.length;i++)
{
result[i] = Integer.parseInt(strarr[i]);
}
return result;
}
/**
* 大写字母转成“_”+小写
* @param str
* @return
*/
public static String toUnderline(String str){
char[] charArr=str.toCharArray();
StringBuffer sb=new StringBuffer();
sb.append(charArr[0]);
for(int i=1;i<charArr.length;i++){
if(charArr[i]>='A'&&charArr[i]<='Z'){
sb.append('_').append(charArr[i]);
}else{
sb.append(charArr[i]);
}
}
return sb.toString().toLowerCase();
}
/**
* 根据身份证计算性别
* @param cardId
* @return
*/
public static int getSexByCardid(String cardId) {
/*String sexNum = "";
if (cardId.length() == 15) {
sexNum = cardId.substring(13, 14);
} else {
sexNum = cardId.substring(16, 17);
}
if (Integer.parseInt(sexNum) % 2 == 1) {
return 1;
} else {
return 0;
}*/
int sexNum = 0;
if (cardId.length() == 15) {
sexNum = cardId.charAt(13);
} else {
sexNum = cardId.charAt(16);
}
if (sexNum % 2 == 1) {
return 1;
} else {
return 0;
}
}
/**
* 根据身份证计算生日
* @param cardId
* @return
*/
public static String getBirthdayByCardid(String cardId) {
String birth = null;
if (cardId.length() == 15) {
birth = cardId.substring(6, 12);
} else {
birth = cardId.substring(6, 14);
}
SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
String birthday = null;
try {
birthday = sf2.format(sf1.parse(birth));
} catch (ParseException e) {
e.printStackTrace();
}
return birthday;
}
public static String getNullStr(Object obj) {
if(obj==null) {
return "";
}
return obj.toString();
}
public static String getFileSuffixName(String fileName){
String suffix = null;
if (fileName != null) {
int last = fileName.lastIndexOf('.');
suffix = fileName.substring(last);
}
return suffix;
}
/**
* 格式化数字
* @param num
* @return
*/
public static String getFormatNumber(String num){
int number=Integer.parseInt(num);
if(Integer.parseInt(num) >= 100000) {
BigDecimal accountB = new BigDecimal(number);
return accountB.divide(new BigDecimal(10000),2,BigDecimal.ROUND_HALF_DOWN).stripTrailingZeros().toPlainString()+"万元";
} else {
return number+"元";
}
}
}