package com.example.util;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
/////////////////////////
import android.graphics.Color;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.ForegroundColorSpan;
import com.example.base.BaseApplication;
/**
* 文本工具类
*
* @author wangzengyang@gmail.com
*/
public class TextUtil {
/**
* Returns true if the string is null or 0-length.
*
* @param str
* the string to be examined
* @return true if str is null or zero length
*/
public static boolean isEmpty(String str) {
if (str == null) {
return true;
}
str = str.trim();
return str.length() == 0 || str.equals("null");
}
/**
* 去掉文件名称中的非法字符
*
* @param str
* @return
*/
public static String escapeFileName(String str) {
if (str == null) {
return null;
}
/** 非法字符包括:/\:*?"<>| */
StringBuilder builder = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == '/' || c == '\\' || c == ':' || c == '*' || c == '?' || c == '"' || c == '<' || c == '>' || c == '|') {
continue;
} else {
builder.append(c);
}
}
return builder.toString();
}
/**
* 从url获取当前图片的id,如果url以ignoreTag开头则直接返回该url;如果ignoreTag为空,则不会判断ignoreTag
*
* @param ignoreTag
* @param url
* @return
*/
public static String getIdFromUrl(String url, String ignoreTag) {
if (TextUtils.isEmpty(url) || (!TextUtils.isEmpty(ignoreTag)) && url.startsWith(ignoreTag))
return url;
int lastIndex = url.lastIndexOf(".jpg");
if (lastIndex < 0)
lastIndex = url.length() - 1;
int beginIndex = url.lastIndexOf("/") + 1;
int slashIndex = url.lastIndexOf("%2F") + 3;
int finalSlashIndex = url.lastIndexOf("%252F") + 5;
beginIndex = Math.max(Math.max(beginIndex, slashIndex), finalSlashIndex);
return url.substring(beginIndex, lastIndex);
}
public static String getIdFromUrl(String url) {
return getIdFromUrl(url, null);
}
public static String trim(String str) {
if (isEmpty(str))
return null;
return str.trim();
}
/**
* 从字符串资源文件读取字符串
*
* @param resId
* @return
*/
public static String getString(int resId) {
return BaseApplication.getAppContext().getResources().getString(resId);
}
public static CharSequence getString(int resIdX, int resIdY) {
return getString(resIdX, getString(resIdY));
}
/**
* 从字符串资源文件读取字符串
*
* @param resId
* @param formatArgs
* @return
*/
public static String getString(int resId, Object... formatArgs) {
return BaseApplication.getAppContext().getResources().getString(resId, formatArgs);
}
/**
* 比较两个字符串是否相同
*
* @param first
* @param second
* @return
*/
public static boolean equals(String first, String second) {
if (isEmpty(first) || isEmpty(second))
return false;
return first.equals(second);
}
/** 简单判断坐标经纬度是否合法 */
public static boolean isCoordinateEmpty(String l) {
if (l == null) {
return true;
}
l = l.trim();
return l.length() == 0 || l.equals("null") || l.equals("0");
}
/**
* 清理密码
* 将密码字符串中的中文、空格去掉
*
* @param password
* @return
*/
public static String cleanPassword(String password) {
if (isEmpty(password))
return "";
return password.replaceAll("[^\\x00-\\xff]*|\\s*", "");
}
/**
* 将密码输入框中的全角字符、空格过滤掉
*
* @param editText
* @param textWatcher
*/
public static void cleanPasswordEditText(final EditText editText, final TextWatcher textWatcher) {
Object tag = editText.getTag();
if (tag != null) {
int selectionTag = 0;
try {
selectionTag = (Integer) tag;
} catch (ClassCastException e) {
return;
}
editText.setSelection(selectionTag);
editText.setTag(null);
return;
}
String password = editText.getText().toString();
int selection = editText.getSelectionStart();
int preLength = password.length();
password = TextUtil.cleanPassword(password);
int cleanedLength = password.length();
selection = selection - (preLength - cleanedLength);
if (selection < 0)
selection = 0;
editText.setTag(selection);
editText.setText(password);
}
/**
* 为EditText 设置密码过滤器
*
* @param editText
*/
public static void setPasswordFilter(EditText editText) {
InputFilter lengthfilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
return cleanPassword(source.toString());
}
};
editText.setFilters(new InputFilter[] { lengthfilter });
}
public static int length(String phone) {
return phone == null ? 0 : phone.length();
}
public static String getIdString(View v) {
return String.valueOf(v.getId());
}
public static String[] getStringArray(int arrayResId) {
return BaseApplication.getAppContext().getResources().getStringArray(arrayResId);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//unicode转换成中文
public static final String decodeUnicode(String theString) {
char aChar;
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len);
for (int x = 0; x < len;) {
aChar = theString.charAt(x++);
if (aChar == '\\') {
aChar = theString.charAt(x++);
if (aChar == 'u') {
// Read the xxxx
int value = 0;
for (int i = 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:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");
}
}
outBuffer.append((char) value);
} else {
if (aChar == 't')
aChar = '\t';
else if (aChar == 'r')
aChar = '\r';
else if (aChar == 'n')
aChar = '\n';
else if (aChar == 'f')
aChar = '\f';
outBuffer.append(aChar);
}
} else
outBuffer.append(aChar);
}
return outBuffer.toString();
}
/**
* 把字符串某一段改为指定的颜色
* @param spannableString
* @param from
* @param end
* @param color
* @return
*/
public static SpannableString getColorSpan(SpannableString spannableString, int from, int end, int color) {
ForegroundColorSpan span = new ForegroundColorSpan(color);
spannableString.setSpan(span, from, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
public static SpannableString getSizeSpan(SpannableString spannableString, int from, int end, int size) {
AbsoluteSizeSpan sizeSpan = new AbsoluteSizeSpan(size);
spannableString.setSpan(sizeSpan, from, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
}
分享标题:文本工具类TextUtil
文章URL:
http://cdweb.net/article/ppeoho.html