packagecom.example.util;importandroid.text.InputFilter;importandroid.text.Spanned;importandroid.text.TextUtils;importandroid.text.TextWatcher;importandroid.view.View;importandroid.widget.EditText;/////////////////////////importandroid.graphics.Color;importandroid.text.Spannable;importandroid.text.SpannableString;importandroid.text.Spanned;importandroid.text.style.AbsoluteSizeSpan;importandroid.text.style.ForegroundColorSpan;importcom.example.base.BaseApplication;/***文本工具类**@authorwangzengyang@gmail.com*/publicclassTextUtil{/***Returnstrueifthestringisnullor0-length.**@paramstr*thestringtobeexamined*@returntrueifstrisnullorzerolength*/publicstaticbooleanisEmpty(Stringstr){if(str==null){returntrue;}str=str.trim();returnstr.length()==0||str.equals("null");}/***去掉文件名称中的非法字符**@paramstr*@return*/publicstaticStringescapeFileName(Stringstr){if(str==null){returnnull;}/**非法字符包括:/\:*?"<>|*/StringBuilderbuilder=newStringBuilder();for(inti=0;i<str.length();i++){charc=str.charAt(i);if(c=='/'||c=='\\'||c==':'||c=='*'||c=='?'||c=='"'||c=='<'||c=='>'||c=='|'){continue;}else{builder.append(c);}}returnbuilder.toString();}/***从url获取当前图片的id,如果url以ignoreTag开头则直接返回该url;如果ignoreTag为空,则不会判断ignoreTag**@paramignoreTag*@paramurl*@return*/publicstaticStringgetIdFromUrl(Stringurl,StringignoreTag){if(TextUtils.isEmpty(url)||(!TextUtils.isEmpty(ignoreTag))&&url.startsWith(ignoreTag))returnurl;intlastIndex=url.lastIndexOf(".jpg");if(lastIndex<0)lastIndex=url.length()-1;intbeginIndex=url.lastIndexOf("/")+1;intslashIndex=url.lastIndexOf("%2F")+3;intfinalSlashIndex=url.lastIndexOf("%252F")+5;beginIndex=Math.max(Math.max(beginIndex,slashIndex),finalSlashIndex);returnurl.substring(beginIndex,lastIndex);}publicstaticStringgetIdFromUrl(Stringurl){returngetIdFromUrl(url,null);}publicstaticStringtrim(Stringstr){if(isEmpty(str))returnnull;returnstr.trim();}/***从字符串资源文件读取字符串**@paramresId*@return*/publicstaticStringgetString(intresId){returnBaseApplication.getAppContext().getResources().getString(resId);}publicstaticCharSequencegetString(intresIdX,intresIdY){returngetString(resIdX,getString(resIdY));}/***从字符串资源文件读取字符串**@paramresId*@paramformatArgs*@return*/publicstaticStringgetString(intresId,Object...formatArgs){returnBaseApplication.getAppContext().getResources().getString(resId,formatArgs);}/***比较两个字符串是否相同**@paramfirst*@paramsecond*@return*/publicstaticbooleanequals(Stringfirst,Stringsecond){if(isEmpty(first)||isEmpty(second))returnfalse;returnfirst.equals(second);}/**简单判断坐标经纬度是否合法*/publicstaticbooleanisCoordinateEmpty(Stringl){if(l==null){returntrue;}l=l.trim();returnl.length()==0||l.equals("null")||l.equals("0");}/***清理密码<br>*将密码字符串中的中文、空格去掉**@parampassword*@return*/publicstaticStringcleanPassword(Stringpassword){if(isEmpty(password))return"";returnpassword.replaceAll("[^\\x00-\\xff]*|\\s*","");}/***将密码输入框中的全角字符、空格过滤掉**@parameditText*@paramtextWatcher*/publicstaticvoidcleanPasswordEditText(finalEditTexteditText,finalTextWatchertextWatcher){Objecttag=editText.getTag();if(tag!=null){intselectionTag=0;try{selectionTag=(Integer)tag;}catch(ClassCastExceptione){return;}editText.setSelection(selectionTag);editText.setTag(null);return;}Stringpassword=editText.getText().toString();intselection=editText.getSelectionStart();intpreLength=password.length();password=TextUtil.cleanPassword(password);intcleanedLength=password.length();selection=selection-(preLength-cleanedLength);if(selection<0)selection=0;editText.setTag(selection);editText.setText(password);}/***为EditText设置密码过滤器**@parameditText*/publicstaticvoidsetPasswordFilter(EditTexteditText){InputFilterlengthfilter=newInputFilter(){@OverridepublicCharSequencefilter(CharSequencesource,intstart,intend,Spanneddest,intdstart,intdend){returncleanPassword(source.toString());}};editText.setFilters(newInputFilter[]{lengthfilter});}publicstaticintlength(Stringphone){returnphone==null?0:phone.length();}publicstaticStringgetIdString(Viewv){returnString.valueOf(v.getId());}publicstaticString[]getStringArray(intarrayResId){returnBaseApplication.getAppContext().getResources().getStringArray(arrayResId);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////unicode转换成中文publicstaticfinalStringdecodeUnicode(StringtheString){charaChar;intlen=theString.length();StringBufferoutBuffer=newStringBuffer(len);for(intx=0;x<len;){aChar=theString.charAt(x++);if(aChar=='\\'){aChar=theString.charAt(x++);if(aChar=='u'){//Readthexxxxintvalue=0;for(inti=0;i<4;i++){aChar=theString.charAt(x++);switch(aChar){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':value=(value<<4)+aChar-'0';break;case'a':case'b':case'c':case'd':case'e':case'f':value=(value<<4)+10+aChar-'a';break;case'A':case'B':case'C':case'D':case'E':case'F':value=(value<<4)+10+aChar-'A';break;default:thrownewIllegalArgumentException("Malformed\\uxxxxencoding.");}}outBuffer.append((char)value);}else{if(aChar=='t')aChar='\t';elseif(aChar=='r')aChar='\r';elseif(aChar=='n')aChar='\n';elseif(aChar=='f')aChar='\f';outBuffer.append(aChar);}}elseoutBuffer.append(aChar);}returnoutBuffer.toString();}/***把字符串某一段改为指定的颜色*@paramspannableString*@paramfrom*@paramend*@paramcolor*@return*/publicstaticSpannableStringgetColorSpan(SpannableStringspannableString,intfrom,intend,intcolor){ForegroundColorSpanspan=newForegroundColorSpan(color);spannableString.setSpan(span,from,end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);returnspannableString;}publicstaticSpannableStringgetSizeSpan(SpannableStringspannableString,intfrom,intend,intsize){AbsoluteSizeSpansizeSpan=newAbsoluteSizeSpan(size);spannableString.setSpan(sizeSpan,from,end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);returnspannableString;}}