java常用工具类 Reflect反射工具类、String字符串工具类
本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下
Reflect反射工具类
packagecom.jarvis.base.util;
/**
*
*
*@Title:ReflectHelper.java
*@Packagecom.jarvis.base.util
*@Description:反射工具类
*@versionV1.0
*/
publicclassReflectHelper{
/**
*提指定的类载入以系统中
*
*@paramname
*类名称
*@return类对象
*@throwsClassNotFoundException
*/
publicstaticClass>classForName(Stringname)throwsClassNotFoundException{
try{
returnThread.currentThread().getContextClassLoader().loadClass(name);
}
catch(ClassNotFoundExceptione){
e.printStackTrace();
System.err.println("类["+name+"]加载出错");
}catch(SecurityExceptione){
e.printStackTrace();
System.err.println("类["+name+"]加载出错");
}
returnClass.forName(name);
}
/**
*根据名称生成指定的对象
*
*@paramname
*类名称
*@return具体的对象,若发生异常,则返回null
*/
publicstaticObjectobjectForName(Stringname){
try{
returnClass.forName(name).newInstance();
}catch(Exceptionex){
ex.printStackTrace();
System.err.println("类["+name+"]获取对象实例出错");
}
returnnull;
}
}
String字符串工具类
packagecom.jarvis.base.util;
importjava.io.UnsupportedEncodingException;
importjava.text.DecimalFormat;
importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;
importjava.util.StringTokenizer;
importjava.util.UUID;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
/**
*
*
*@Title:StringHelper.java
*@Packagecom.jarvis.base.utils
*@Description:
*@versionV1.0字符串处理工具类。
*/
publicfinalclassStringHelper{
/**
*描述:构造方法
*/
privateStringHelper(){
}
/**
*空字符串
*/
publicstaticfinalStringEMPTY_STRING="";
/**
*点
*/
publicstaticfinalcharDOT='.';
/**
*下划线
*/
publicstaticfinalcharUNDERSCORE='_';
/**
*逗点及空格
*/
publicstaticfinalStringCOMMA_SPACE=",";
/**
*逗点
*/
publicstaticfinalStringCOMMA=",";
/**
*开始括号
*/
publicstaticfinalStringOPEN_PAREN="(";
/**
*结束括号
*/
publicstaticfinalStringCLOSE_PAREN=")";
/**
*单引号
*/
publicstaticfinalcharSINGLE_QUOTE='\'';
/**
*回车
*/
publicstaticfinalStringCRLF="\r\n";
/**
*常量12
*/
publicstaticfinalintFIANL_TWELVE=12;
/**
*十六进制常量0x80
*/
publicstaticfinalintHEX_80=0x80;
/**
*十六进制常量0xff
*/
publicstaticfinalintHEX_FF=0xff;
/**
*把字符数组,转化为一个字符
*
*@paramseperator
*字符分隔符
*@paramstrings
*数组对象
*@return字符串
*/
publicstaticStringjoin(Stringseperator,String[]strings){
intlength=strings.length;
if(length==0){
returnEMPTY_STRING;
}
StringBufferbuf=newStringBuffer(length*strings[0].length()).append(strings[0]);
for(inti=1;iobjects){
StringBufferbuf=newStringBuffer();
if(objects.hasNext()){
buf.append(objects.next());
}
while(objects.hasNext()){
buf.append(seperator).append(objects.next());
}
returnbuf.toString();
}
/**
*把两个字符串数组的元素用分隔符连接,生成新的数组,生成的数组以第一个字符串数组为参照,与其长度相同。
*
*@paramx
*字符串数组
*@paramseperator
*分隔符
*@paramy
*字符串数组
*@return组合后的字符串数组
*/
publicstaticString[]add(String[]x,Stringseperator,String[]y){
String[]result=newString[x.length];
for(inti=0;i=0){
output.append(source.substring(posStart,pos));
output.append(replace);
posStart=pos+oldLen;
}
//如果还有没有处理的字符串,则都添加到新字符串后面
if(posStartplaceholders,Iterator>replacements){
String[]result=newString[]{string};
while(placeholders.hasNext()){
result=multiply(result,(String)placeholders.next(),(String[])replacements.next());
}
returnresult;
}
/**
*把数组中的所有元素出现的字符串进行替换,把旧字符串替换为新字符数组的所有元素,只替换第一次出现的字符。
*
*@paramstrings
*需要替换的数组
*@paramplaceholder
*需要替换的字符串
*@paramreplacements
*新字符串数组
*@return替换后的字符串数组
*/
privatestaticString[]multiply(String[]strings,Stringplaceholder,String[]replacements){
String[]results=newString[replacements.length*strings.length];
intn=0;
for(inti=0;i0;
}
/**
*判断字符串是否空,如果为true则为空
*
*@paramstr
*字符串
*@returntrue/false
*/
publicstaticbooleanisEmpty(Stringstr){
if(str==null||str.trim().length()==0){
returntrue;
}
returnfalse;
}
/**
*向字符串添加上前缀,并以.作为分隔符
*
*@paramname
*需要添加前缀的字符串
*@paramprefix
*前缀
*@return添加前缀后的字符串
*/
publicstaticStringqualify(Stringname,Stringprefix){
if(name.startsWith("'")){
returnname;
}
returnnewStringBuffer(prefix.length()+name.length()+1).append(prefix).append(DOT).append(name).toString();
}
/**
*向字符串数组中的所有字符添加上前缀,前以点作为分隔符
*
*@paramnames
*字符串数组
*@paramprefix
*前缀
*@return添加前缀后的字符串数组
*/
publicstaticString[]qualify(String[]names,Stringprefix){
if(prefix==null){
returnnames;
}
intlen=names.length;
String[]qualified=newString[len];
for(inti=0;i=0){
if(matchAt==-1){
matchAt=curMatch;
}else{
matchAt=Math.min(matchAt,curMatch);
}
}
}
returnmatchAt;
}
/**
*从字符串中提取指字长度的字符。区分中英文。
*如果需要加省略号,则将在指定长度上少取3个字符宽度,末尾加上"......"。
*
*@paramstring
*字符串
*@paramlength
*要取的字符长度,此为中文长度,英文仅当作半个字符。
*@paramappendSuspensionPoints
*是否需要加省略号
*@return提取后的字符串
*/
publicstaticStringtruncate(Stringstring,intlength,booleanappendSuspensionPoints){
if(isEmpty(string)||length<0){
returnstring;
}
if(length==0){
return"";
}
intstrLength=string.length();//字符串字符个数
intbyteLength=byteLength(string);//字符串字节长度
length*=2;//换成字节长度
//判断是否需要加省略号
booleanneedSus=false;
if(appendSuspensionPoints&&byteLength>=length){
needSus=true;
//如果需要加省略号,则要少取2个字节用来加省略号
length-=2;
}
StringBufferresult=newStringBuffer();
intcount=0;
for(inti=0;i=length){//取完了
break;
}
charc=string.charAt(i);
if(isLetter(c)){//Ascill字符
result.append(c);
count+=1;
}else{//非Ascill字符
if(count==length-1){//如果只要取1个字节了,而后面1个是汉字,就放空格
result.append("");
count+=1;
}else{
result.append(c);
count+=2;
}
}
}
if(needSus){
result.append("...");
}
returnresult.toString();
}
/**
*描述:判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符)
*
*@paramc
*需要判断的字符
*@return
*/
publicstaticbooleanisLetter(charc){
intk=HEX_80;
returnc/k==0?true:false;
}
/**
*得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为2,英文字符长度为1
*
*@params
*,需要得到长度的字符串
*@returnint,得到的字符串长度
*/
publicstaticintbyteLength(Strings){
char[]c=s.toCharArray();
intlen=0;
for(inti=0;i-1;i--){
if(!Character.isWhitespace(ch[i])){
break;
}
endIndex=i;
}
if(endIndex!=-1){
result=result.substring(0,endIndex);
}
returnresult;
}
/**
*把null字符串转化为""
*
*@paramsource
*空字符串
*@return转化后的字符串
*/
publicstaticStringn2s(Stringsource){
returnsource!=null?source:"";
}
/**
*如果字符串为空,则返回默认字符串
*
*@paramsource
*源字符串
*@paramdefaultStr
*默认字符串
*@return转换后的字符串
*/
publicstaticStringn2s(Stringsource,StringdefaultStr){
returnsource!=null?source:defaultStr;
}
/**
*将字符串格式化成HTML以SCRIPT变量主要是替换单,双引号,以将内容格式化输出,适合于HTML中的显示输出
*
*@paramstr
*要格式化的字符串
*@return格式化后的字符串
*/
publicstaticStringtoScript(Stringstr){
if(str==null){
returnnull;
}
Stringhtml=newString(str);
html=replace(html,"\"","\\\"");
html=replace(html,"\r\n","\n");
html=replace(html,"\n","\\n");
html=replace(html,"\t","");
html=replace(html,"\'","\\\'");
html=replace(html,""," ");
html=replace(html,"","<\\/script>");
html=replace(html,"","<\\/SCRIPT>");
returnhtml;
}
/**
*同于String#trim(),但是检测null,如果原字符串为null,则仍然返回null
*
*@params
*s
*@return
*/
publicstaticStringtrim(Strings){
returns==null?s:s.trim();
}
/**
*对字符串进行空格处理,如果字符串为null呀是空字符串,则返回默认的数字。
*
*@paramsource
*需要进行处理的字符串
*@paramdefaultValue
*缺省值
*@return字符串的数字值
*/
publicstaticintstrTrim(Stringsource,intdefaultValue){
if(isEmpty(source)){
returndefaultValue;
}
try{
source=source.trim();
intvalue=(newInteger(source)).intValue();
returnvalue;
}catch(Exceptionex){
ex.printStackTrace();
System.err.println("数字转换出错,请检查数据来源。返回默认值");
returndefaultValue;
}
}
/**
*对字符串进行过滤处理,如果字符串是null或为空字符串,返回默认值。
*
*@paramsource
*需要进行处理的字符串
*@paramdefaultValue
*缺省值
*@return过滤后的字符串
*/
publicstaticStringstrTrim(Stringsource,StringdefaultValue){
if(StringHelper.isEmpty(source)){
returndefaultValue;
}
try{
source=source.trim();
returnsource;
}catch(Exceptionex){
ex.printStackTrace();
System.err.println("字符串去空格失败,返回默认值");
returndefaultValue;
}
}
/**
*描述:为了防止跨站脚本攻击,转换<>这种尖括号。
*
*@paramsource
*@return
*/
publicstaticStringencodeURL(Stringsource){
if(source==null){
returnnull;
}
Stringhtml=newString(source);
html=replace(html,"<","<");
html=replace(html,">",">");
html=replace(html,"\"",""");
html=replace(html,""," ");
html=replace(html,"\'","´");
html=replace(html,"\\","\");
html=replace(html,"&","&");
html=replace(html,"\r","");
html=replace(html,"\n","");
html=replace(html,"(","(");
html=replace(html,")",")");
html=replace(html,"[","[");
html=replace(html,"]","]");
html=replace(html,";",";");
html=replace(html,"/","/");
returnhtml;
}
/**
*把字符串中一些特定的字符转换成html字符,如&、<、>、"号等
*
*@paramsource
*需要进行处理的字符串
*@return处理后的字符串
*/
publicstaticStringencodeHtml(Stringsource){
if(source==null){
returnnull;
}
Stringhtml=newString(source);
html=replace(html,"&","&");
html=replace(html,"<","<");
html=replace(html,">",">");
html=replace(html,"\"",""");
html=replace(html,""," ");
html=replace(html,"\'","´");
returnhtml;
}
/**
*把一些html的字符串还原
*
*@paramsource
*需要进行处理的字符串
*@return处理后的字符串
*/
publicstaticStringdecodeHtml(Stringsource){
if(source==null){
returnnull;
}
Stringhtml=newString(source);
html=replace(html,"&","&");
html=replace(html,"<","<");
html=replace(html,">",">");
html=replace(html,""","\"");
html=replace(html,""," ");
html=replace(html,"\r\n","\n");
html=replace(html,"\n","
\n");
html=replace(html,"\t","");
html=replace(html,""," ");
returnhtml;
}
/**
*判断字符串是否为布尔值,如true/false等
*
*@paramsource
*需要进行判断的字符串
*@return返回字符串的布尔值
*/
publicstaticbooleanisBoolean(Stringsource){
if(source.equalsIgnoreCase("true")||source.equalsIgnoreCase("false")){
returntrue;
}
returnfalse;
}
/**
*去除字符串中的最后字符
*
*@paramstr
*原字符串
*@paramstrMove
*要去除字符比如","
*@return去除后的字符串
*/
publicstaticStringlastCharTrim(Stringstr,StringstrMove){
if(isEmpty(str)){
return"";
}
StringnewStr="";
if(str.lastIndexOf(strMove)!=-1&&str.lastIndexOf(strMove)==str.length()-1){
newStr=str.substring(0,str.lastIndexOf(strMove));
}
returnnewStr;
}
/**
*清除字符串里的html代码
*
*@paramhtml
*需要进行处理的字符串
*@return清除html后的代码
*/
publicstaticStringclearHtml(Stringhtml){
if(isEmpty(html)){
return"";
}
StringpatternStr="(<[^>]*>)";
Patternpattern=Pattern.compile(patternStr,Pattern.CASE_INSENSITIVE);
Matchermatcher=null;
StringBufferbf=newStringBuffer();
try{
matcher=pattern.matcher(html);
booleanfirst=true;
intstart=0;
intend=0;
while(matcher.find()){
start=matcher.start(1);
if(first){
bf.append(html.substring(0,start));
first=false;
}else{
bf.append(html.substring(end,start));
}
end=matcher.end(1);
}
if(end");
content=StringHelper.replace(content,"\n","
");
returncontent;
}
/**
*
*描述:大写英文字母转换成小写
*
*@paramstrIn
*字符串参数
*@return
*/
publicstaticStringtoLowerStr(StringstrIn){
StringstrOut=newString();//输出的字串
intlen=strIn.length();//参数的长度
inti=0;//计数器
charch;//存放参数的字符
while(i='A'&&ch<='Z'){
ch=(char)(ch-'A'+'a');
}
strOut+=ch;
i++;
}
returnstrOut;
}
/**
*
*描述:小写英文字母转换成大写
*
*@paramstrIn
*字符串参数
*@return
*/
publicstaticStringtoUpperStr(StringstrIn){
StringstrOut=newString();//输出的字串
intlen=strIn.length();//参数的长度
inti=0;//计数器
charch;//存放参数的字符
while(i='a'&&ch<='z'){
ch=(char)(ch-'a'+'A');
}
strOut+=ch;
i++;
}
returnstrOut;
}
/**
*货币缩写,提供亿和万两个单位,并精确到小数点2位切换到新的算法:对数算法
*
*@paramoriginal
*@return
*/
publicstaticStringcurrencyShortFor(Stringoriginal){
if(StringHelper.isBlank(original)){
return"";
}else{
StringshortFor="";
doubleshortForValue=0;
DecimalFormatdf=newDecimalFormat("#.00");
try{
doubleaccount=Double.parseDouble(original);
if(account/100000000>1){
shortForValue=account/100000000;
shortFor=df.format(shortForValue)+"亿";
}elseif(account/10000>1){
shortForValue=account/10000;
shortFor=df.format(shortForValue)+"万";
}else{
shortFor=original;
}
}catch(NumberFormatExceptione){
e.printStackTrace();
System.err.println("字符串["+original+"]转换成数字出错");
}
returnshortFor;
}
}
/**
*将日期格式由yyyyMMdd装换为yyyy-MM-dd
*
*@paramdate
*DatestringwhoseformatisyyyyMMdd.
*@return
*/
publicstaticStringformatDate(Stringdate){
if(isBlank(date)||date.length()<8){
return"";
}
StringBufferdateBuf=newStringBuffer();
dateBuf.append(date.substring(0,4));
dateBuf.append("-");
dateBuf.append(date.substring(4,6));
dateBuf.append("-");
dateBuf.append(date.substring(6,8));
returndateBuf.toString();
}
/**
*判断是否为整数
*
*@paramstr
*传入的字符串
*@return是整数返回true,否则返回false
*/
publicstaticbooleanisInteger(Stringstr){
Patternpattern=Pattern.compile("^\\d+(\\.0)?$",Pattern.CASE_INSENSITIVE);
returnpattern.matcher(str).matches();
}
/**
*用于=中英文混排标题中限定字符串长度。保证显示长度最多只相差一个全角字符。
*
*@paramstring
*需要截取的字符串
*@parambyteCount
*字节数(度量标准为中文为两个字节,ASCII字符为一个字节,这样子,刚好匹配ASCII为半角字符,而中文为全角字符,
*保证在网页上中英文混合的句子长度一致)
*@return
*@throwsUnsupportedEncodingException
*/
publicstaticStringsubstring(Stringstring,intbyteCount)throwsUnsupportedEncodingException{
if(isBlank(string)){
returnstring;
}
byte[]bytes=string.getBytes("Unicode");//使用UCS-2编码.
intviewBytes=0;//表示当前的字节数(英文为单字节,中文为双字节的表示方法)
intucs2Bytes=2;//要截取的字节数,从第3个字节开始,前两位为位序。(UCS-2的表示方法)
//UCS-2每个字符使用两个字节来编码。
//ASCIIn+=1,i+=2
//中文n+=2,i+=2
for(;ucs2Bytesucs2Bytes){
result+="...";
}
returnresult;
}
/**
*描述:根据长度截断字串
*
*@paramstr
*字串
*@paramlength
*截取长度
*@return
*/
publicstaticString[]splite(Stringstr,intlength){
if(StringHelper.isEmpty(str)){
returnnull;
}
String[]strArr=newString[(str.length()+length-1)/length];
for(inti=0;ii*length+length-1){
strArr[i]=str.substring(i*length,i*length+length-1);
}else{
strArr[i]=str.substring(i*length);
}
}
returnstrArr;
}
/**
*描述:把某一个字符变成大写
*
*@paramstr
*str字串
*@paramindex
*第几个字符
*@return
*/
publicstaticStringtoUpOneChar(Stringstr,intindex){
returntoUpOrLowOneChar(str,index,1);
}
/**
*描述:把某一个字符变成小写作者:李建时间:Dec17,20109:42:32PM
*
*@paramstr
*str字串
*@paramindex
*第几个字符
*@return
*/
publicstaticStringtoLowOneChar(Stringstr,intindex){
returntoUpOrLowOneChar(str,index,0);
}
/**
*描述:把某一个字符变成大写或小写作者:李建时间:Dec17,20109:39:32PM
*
*@paramstr
*字串
*@paramindex
*第几个字符
*@paramupOrLow
*大小写1:大写;0小写
*@return
*/
publicstaticStringtoUpOrLowOneChar(Stringstr,intindex,intupOrLow){
if(StringHelper.isNotEmpty(str)&&index>-1&&indexsplit2List(Stringvalue,Stringseparator){
Listls=newArrayList();
inti=0,j=0;
while((i=value.indexOf(separator,i))!=-1){
ls.add(value.substring(j,i));
++i;
j=i;
}
ls.add(value.substring(j));
returnls;
}
/**
*将数组用分隔符连接成新字符串(split的逆方法)
*
*@paramstrs
*字符串数组
*@paramsep
*分隔符
*@return结果字符串
*/
publicstaticStringjoin(String[]strs,Stringsep){
StringBuilderres=newStringBuilder();
for(inti=0;i
*例:StringstrVal="Thisisadog";String
*strResult=CTools.replace(strVal,"dog","cat");结果:strResultequals
*"Thisiscat"
*
*@paramstrSrc
*要进行替换操作的字符串
*@paramstrOld
*要查找的字符串
*@paramstrNew
*要替换的字符串
*@return替换后的字符串
*
*
*/
publicstaticfinalStringreplaceAllStr(StringstrSrc,StringstrOld,StringstrNew){
if(strSrc==null||strOld==null||strNew==null)
return"";
inti=0;
if(strOld.equals(strNew))//避免新旧字符一样产生死循环
returnstrSrc;
if((i=strSrc.indexOf(strOld,i))>=0){
char[]arr_cSrc=strSrc.toCharArray();
char[]arr_cNew=strNew.toCharArray();
intintOldLen=strOld.length();
StringBufferbuf=newStringBuffer(arr_cSrc.length);
buf.append(arr_cSrc,0,i).append(arr_cNew);
i+=intOldLen;
intj=i;
while((i=strSrc.indexOf(strOld,i))>0){
buf.append(arr_cSrc,j,i-j).append(arr_cNew);
i+=intOldLen;
j=i;
}
buf.append(arr_cSrc,j,arr_cSrc.length-j);
returnbuf.toString();
}
returnstrSrc;
}
/**
*用于将字符串中的特殊字符转换成Web页中可以安全显示的字符串可对表单数据据进行处理对一些页面特殊字符进行处理如'
*<','>','"',''','&'
*
*@paramstrSrc
*要进行替换操作的字符串
*@return替换特殊字符后的字符串
*@since1.0
*/
publicstaticStringhtmlEncode(StringstrSrc){
if(strSrc==null)
return"";
char[]arr_cSrc=strSrc.toCharArray();
StringBufferbuf=newStringBuffer(arr_cSrc.length);
charch;
for(inti=0;i')
buf.append(">");
elseif(ch=='"')
buf.append(""");
elseif(ch=='\'')
buf.append("'");
elseif(ch=='&')
buf.append("&");
else
buf.append(ch);
}
returnbuf.toString();
}
/**
*用于将字符串中的特殊字符转换成Web页中可以安全显示的字符串可对表单数据据进行处理对一些页面特殊字符进行处理如'
*<','>','"',''','&'
*
*@paramstrSrc
*要进行替换操作的字符串
*@paramquotes
*为0时单引号和双引号都替换,为1时不替换单引号,为2时不替换双引号,为3时单引号和双引号都不替换
*@return替换特殊字符后的字符串
*@since1.0
*/
publicstaticStringhtmlEncode(StringstrSrc,intquotes){
if(strSrc==null)
return"";
if(quotes==0){
returnhtmlEncode(strSrc);
}
char[]arr_cSrc=strSrc.toCharArray();
StringBufferbuf=newStringBuffer(arr_cSrc.length);
charch;
for(inti=0;i')
buf.append(">");
elseif(ch=='"'&"es==1)
buf.append(""");
elseif(ch=='\''&"es==2)
buf.append("'");
elseif(ch=='&')
buf.append("&");
else
buf.append(ch);
}
returnbuf.toString();
}
/**
*和htmlEncode正好相反
*
*@paramstrSrc
*要进行转换的字符串
*@return转换后的字符串
*@since1.0
*/
publicstaticStringhtmlDecode(StringstrSrc){
if(strSrc==null)
return"";
strSrc=strSrc.replaceAll("<","<");
strSrc=strSrc.replaceAll(">",">");
strSrc=strSrc.replaceAll(""","\"");
strSrc=strSrc.replaceAll("'","'");
strSrc=strSrc.replaceAll("&","&");
returnstrSrc;
}
/**
*实际处理returntoChineseNoReplace(null2Blank(str));
*
*@paramstr
*要进行处理的字符串
*@return转换后的字符串
*@seefs_com.utils.CTools#toChinese
*@seefs_com.utils.CTools#null2Blank
*/
publicstaticStringtoChineseAndHtmlEncode(Stringstr,intquotes){
try{
if(str==null){
return"";
}else{
str=str.trim();
str=newString(str.getBytes("ISO8859_1"),"GBK");
StringhtmlEncode=htmlEncode(str,quotes);
returnhtmlEncode;
}
}catch(Exceptionexp){
return"";
}
}
/**
*把null值和""值转换成 主要应用于页面表格格的显示
*
*@paramstr
*要进行处理的字符串
*@return转换后的字符串
*/
publicstaticStringstr4Table(Stringstr){
if(str==null)
return" ";
elseif(str.equals(""))
return" ";
else
returnstr;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。