字符串处理的类
package cn.hfhs.common.tools;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//字符替换
public class StringBean {
/**
* 全文替换
*
* @param strSource
* 源字符串
* @param strFrom
* 被替换字符
* @param strTo
* 替换字符
* @return 替换完成的字符串
*/
public static String strReplace(String strSource, String strFrom,
String strTo) {
java.lang.String strDest = "";
int intFromLen = strFrom.length();
int intPos;
while ((intPos = strSource.indexOf(strFrom)) != -1) {
strDest = strDest + strSource.substring(0, intPos);
strDest = strDest + strTo;
strSource = strSource.substring(intPos + intFromLen);
}
strDest = strDest + strSource;
return strDest;
}
/**
* 分割字串
*
* @param source
* 原始字符
* @param div
* 分割符
* @return 字符串数组
*/
public static String[] split(String source, String div) {
int arynum = 0, intIdx = 0, intIdex = 0, div_length = div.length();
if (source.compareTo("") != 0) {
if (source.indexOf(div) != -1) {
intIdx = source.indexOf(div);
for (int intCount = 1;; intCount++) {
if (source.indexOf(div, intIdx + div_length) != -1) {
intIdx = source.indexOf(div, intIdx + div_length);
arynum = intCount;
} else {
arynum += 2;
break;
}
}
} else {
arynum = 1;
}
} else {
arynum = 0;
}
intIdx = 0;
intIdex = 0;
String[] returnStr = new String[arynum];
if (source.compareTo("") != 0) {
if (source.indexOf(div) != -1) {
intIdx = (int) source.indexOf(div);
returnStr[0] = (String) source.substring(0, intIdx);
for (int intCount = 1;; intCount++) {
if (source.indexOf(div, intIdx + div_length) != -1) {
intIdex = (int) source
.indexOf(div, intIdx + div_length);
returnStr[intCount] = (String) source.substring(intIdx
+ div_length, intIdex);
intIdx = (int) source.indexOf(div, intIdx + div_length);
} else {
returnStr[intCount] = (String) source.substring(intIdx
+ div_length, source.length());
break;
}
}
} else {
returnStr[0] = (String) source.substring(0, source.length());
return returnStr;
}
} else {
return returnStr;
}
return returnStr;
}
/**
* 正则表达式全文替换
*
* @param strFrom
* 被替换字符
* @param strTo
* 替换字符
* @param regEx
* 正则表达式
* @return 替换完成的字符串
*/
public static String regReplace(String strFrom, String strTo, String regEx) {
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(strFrom);
String s = m.replaceAll(strTo);
return s;
}
/**
* 正则表达式首次替换
*
* @param regEx
* 正则表达式
* @param srcStr
* 被替换字符
* @param repStr
* 替换字符
* @return 替换完成的字符串
*/
public static String regReplaceFirst(String regEx, String srcStr,
String repStr) {
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(srcStr);
String s = m.replaceFirst(repStr);
return s;
}
/**
* 正则表达式查找
*
* @param srcStr
* 被查字符串
* @param regEx
* 正则表达式
* @param s
* 目标字符串
* @return 布尔类型
*/
public static boolean regFind(String srcStr, String regEx, int s) {
boolean result = Pattern.compile(regEx).matcher(srcStr).find(s);
return result;
}
/**
* 处理NULL
* @param str
* @return
*/
public static String dealNull(String str) {
String returnStr = null;
if (str == null) {
returnStr = "";
} else {
returnStr = str;
}
return returnStr;
}
/**
* 处理NULL
* @param str
* @return
*/
public static Object dealNull(Object obj) {
Object returnStr = null;
if (obj == null) {
returnStr = (Object) ("");
} else {
returnStr = obj;
}
return returnStr;
}
/*
* HTML格式化
*/
public static String htmlFormat(String in) {
StringBuffer out = new StringBuffer();
for (int i = 0; in != null && i < in.length(); i++) {
char c = in.charAt(i);
if (c == '\'')
out.append("'");
else if (c == '\"')
out.append(""");
else if (c == '<')
out.append("<");
else if (c == '>')
out.append(">");
else if (c == '&')
out.append("&");
else
out.append(c);
}
return out.toString();
}
/*
* 还原HTML格式化:适合在文本区域中显示完全正确的数据
*/
public static String resetHtmlFormat(String srcString) {
srcString=StringBean.strReplace(srcString,"'","'");
srcString=StringBean.strReplace(srcString,""","\"");
srcString=StringBean.strReplace(srcString,"<","<");
srcString=StringBean.strReplace(srcString,">",">");
srcString=StringBean.strReplace(srcString,"&","&");
return srcString;
}
public static void main(String args[]){
String str="A12345";
String str2="皖A-12345";
System.out.println(regFind(str,"^[A-Z]{1}[0-9]{5}$",0));
System.out.print(regFind(str2,"^[\\W]{1}[A-Z]{1}-[0-9]{5}$",0));
}
}
时间处理的类
package cn.hfhs.common.tools;
import java.util.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import cn.hfhs.common.tools.*;
public class DateBean {
/**
* 时间格式: 20050601081202
*/
public static String nowNumStr() {
Calendar now = Calendar.getInstance();
String yyyy = String.valueOf(now.get(Calendar.YEAR));
String mm = String.valueOf(now.get(Calendar.MONTH) + 1);
String dd = String.valueOf(now.get(Calendar.DAY_OF_MONTH));
String hh = String.valueOf(now.get(Calendar.HOUR_OF_DAY));
String ii = String.valueOf(now.get(Calendar.MINUTE));
String ss = String.valueOf(now.get(Calendar.SECOND));
mm = (1 == mm.length()) ? ("0" + mm) : mm;
dd = (1 == dd.length()) ? ("0" + dd) : dd;
hh = (1 == hh.length()) ? ("0" + hh) : hh;
ii = (1 == ii.length()) ? ("0" + ii) : ii;
ss = (1 == ss.length()) ? ("0" + ss) : ss;
String timeStr = yyyy + mm + dd + hh + ii + ss;
return timeStr;
}
/**
* 时间格式:2005-01-20
*/
public static String ymdStr() {
Calendar now = Calendar.getInstance();
String yyyy = String.valueOf(now.get(Calendar.YEAR));
String mm = String.valueOf(now.get(Calendar.MONTH) + 1);
String dd = String.valueOf(now.get(Calendar.DAY_OF_MONTH));
mm = (1 == mm.length()) ? ("0" + mm) : mm;
dd = (1 == dd.length()) ? ("0" + dd) : dd;
return yyyy + "-" + mm + "-" + dd;
}
/**
* 时间格式:08:12:45
*/
public static String hisStr() {
Calendar now = Calendar.getInstance();
String hh = String.valueOf(now.get(Calendar.HOUR_OF_DAY));
String ii = String.valueOf(now.get(Calendar.MINUTE));
String ss = String.valueOf(now.get(Calendar.SECOND));
hh = (1 == hh.length()) ? ("0" + hh) : hh;
ii = (1 == ii.length()) ? ("0" + ii) : ii;
ss = (1 == ss.length()) ? ("0" + ss) : ss;
return hh + ":" + ii + ":" + ss;
}
/**
* 时间格式: 2005-01-23 08:12:45
*
* @return
*/
public static String nowTimeStr() {
return ymdStr() + " " + hisStr();
}
/**
* 获取年 2006
*/
public static String yyyyStr() {
Calendar now = Calendar.getInstance();
now = Calendar.getInstance();
String yyyy = String.valueOf(now.get(Calendar.YEAR));
return yyyy;
}
/**
* 获取月 06
*/
public static String mmStr() {
Calendar now = Calendar.getInstance();
String mm = String.valueOf(now.get(Calendar.MONTH) + 1);
mm = (1 == mm.length()) ? ("0" + mm) : mm;
return mm;
}
/**
* 获取日
*/
public static String ddStr() {
Calendar now = Calendar.getInstance();
String dd = String.valueOf(now.get(Calendar.DAY_OF_MONTH));
dd = (1 == dd.length()) ? ("0" + dd) : dd;
return dd;
}
/**
* 格式化SQL日期
*/
public static String format(String pattern, java.sql.Date date) {
return new java.text.SimpleDateFormat(pattern).format(date);
}
/**
* 格式化JAVA日期
*/
public static String format(String pattern, java.util.Date date) {
return new java.text.SimpleDateFormat(pattern).format(date);
}
/**
* 在当前日期加或减多少天得到新日期
*
* @param i
* 增加的天数
* @param operator:+ -
* @return 新日期
*/
public static String strToDateByInt(int i, String operator, String df) {
Date d = new Date();
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(d);
if ("+".equals(operator)) {
gc.add(GregorianCalendar.DATE, i);
} else if ("-".equals(operator)) {
gc.add(GregorianCalendar.DATE, (-i));
}
Date now = gc.getTime();
if (df.equals(""))
df = "yyyy-MM-dd hh:mm:ss"; // 默认输出时间格式
SimpleDateFormat sdf = new SimpleDateFormat(df);
return sdf.format(now);
}
/**
* 计算某年某月有多少天
*
* @param year
* @param month
* @return
*/
public static int daysInMonth(int year, int month) {
if (month <= 0 || month > 12) {
System.out.println("非法参数:month");
return -1;
}
int days = 31;
if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
}
if (month == 2) {
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
days = 29;
} else {
days = 28;
}
}
return days;
}
/**
* 取得下个月
*
*/
public static void getNextMonth() {
try {
Calendar cl = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
cl.setTime(sdf.parse("200601"));
// cl.add(cl.MONTH, 1);
System.out.print(cl.get(cl.MONTH + 1));//
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 计算两个日期之间的月差
*/
public static int dispersionMonth2(String strDate1, String strDate2) {
int iMonth = 0;
int flag = 0;
try {
Calendar objCalendarDate1 = Calendar.getInstance();
objCalendarDate1.setTime(DateFormat.getDateInstance().parse(
strDate1));
Calendar objCalendarDate2 = Calendar.getInstance();
objCalendarDate2.setTime(DateFormat.getDateInstance().parse(
strDate2));
if (objCalendarDate2.equals(objCalendarDate1))
return 0;
if (objCalendarDate1.after(objCalendarDate2)) {
Calendar temp = objCalendarDate1;
objCalendarDate1 = objCalendarDate2;
objCalendarDate2 = temp;
}
if (objCalendarDate2.get(Calendar.DAY_OF_MONTH) < objCalendarDate1
.get(Calendar.DAY_OF_MONTH))
flag = 1;
if (objCalendarDate2.get(Calendar.YEAR) > objCalendarDate1
.get(Calendar.YEAR))
iMonth = ((objCalendarDate2.get(Calendar.YEAR) - objCalendarDate1
.get(Calendar.YEAR))
* 12 + objCalendarDate2.get(Calendar.MONTH) - flag)
- objCalendarDate1.get(Calendar.MONTH);
else
iMonth = objCalendarDate2.get(Calendar.MONTH)
- objCalendarDate1.get(Calendar.MONTH) - flag;
} catch (Exception e) {
}
return iMonth;
}
public static int dispersionDays2( String sEndDate, String sBeginDate)
throws Exception {
Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd");// 格式很重要:是20051031,还是2005-10-31格式呢?
if (sBeginDate.equals("0")) {
System.out.println("sBirthDate.equals====0");
sBeginDate = "19000101";
}
calendar1.setTime(formatter1.parse(sBeginDate));
calendar2.setTime(formatter1.parse(sEndDate));
return (int) ((calendar2.getTimeInMillis() - calendar1
.getTimeInMillis()) / 1000 / 60 / 60 / 24);// 获取天数的差值。
}
public static void main(String args[]) {
// System.out.println(strToDateByInt(1, "+", "yyyy-MM-dd hh:mm:ss"));
// System.out.println(dispersionDays2("2006-04-07","2006-03-01"));
// getNextMonth();
try {
System.out.println(dispersionDays2("2006-04-07","2006-03-01"
));
} catch (Exception e) {
}
}
}