【Java|Android】字符串工具类
来源:互联网 发布:淘宝里最贵的东西 编辑:程序博客网 时间:2024/06/05 10:29
摘自:https://github.com/cundong/ZhihuPaper
import java.io.IOException;import java.io.InputStream;import java.net.URLEncoder;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.json.JSONException;import org.json.JSONObject;/** * 类说明: 字符串操作类 * * @author Cundong * @date Feb 7, 2012 2:51:58 AM * @version 1.0 */public class StringUtils {public static final String[] EMPTY_STRING = new String[0];/** * 判断给定字符串是否空白串。<br> * 空白串是指由空格、制表符、回车符、换行符组成的字符串<br> * 若输入字符串为null或空字符串,返回true * * @param input * @return boolean */public static boolean isBlank(String input) {if (input == null || "".equals(input))return true;for (int i = 0; i < input.length(); i++) {char c = input.charAt(i);if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {return false;}}return true;}/** * 若输入为null,则返回空字符串;否则返回字符串自身 * * @param * @return */public static String getNotNull(String input) {return (input == null ? "" : input);}public static String getNotNull(String input, String defaultValue) {return (isBlank(input) ? defaultValue : input);}/** * 截取字符串末尾空格 * * @param input * @return */public static String trim(String input) {if (isBlank(input))return "";return input.trim();}/** * 根据指定分隔符分割字符串,返回结果数组。<br> * 处理规则:<br> * 若输入为null,则返回null;<br> * 否则若输入为空字符串,则返回空数组;<br> * 否则若分隔符为null或空字符串,则返回包含原字符串本身的数组;<br> * * @param input * 输入字符串 * @param separator * 分隔符 * @return 结果数组(注意:包括空字符串) */public static String[] split(String input, String separator) {if (input == null)return null;if (input.equals(""))return EMPTY_STRING;if (separator == null || "".equals(separator))return new String[] { input };int cursor = 0; // 游标int lastPos = 0; // 指向上一个分隔符后第一个字符ArrayList<String> list = new ArrayList<String>();while ((cursor = input.indexOf(separator, cursor)) != -1) {String token = input.substring(lastPos, cursor);list.add(token);lastPos = cursor + separator.length();cursor = lastPos;}if (lastPos < input.length())list.add(input.substring(lastPos));return (String[]) list.toArray(new String[list.size()]);}/** * 字符串替换 * * @param source * @param oldstring * @param newstring * @param caseInsensive * @return */public static String replaceString(String source, String oldstring, String newstring, boolean caseInsensive) {Matcher matcher = null;// 区分大小写if (caseInsensive) {matcher = Pattern.compile(oldstring, Pattern.CASE_INSENSITIVE).matcher(source);} else {matcher = Pattern.compile(oldstring).matcher(source);}return matcher.replaceAll(newstring);}/** * 清除字符串末尾的特定字符<br> * 若字符串末尾并非给定字符,则什么都不做<br> * 注意:该方法改变了传入的StringBuffer参数的值 * * @param sb * 字符串缓存 * @param tail * 用户给定字符 * @return 字符串缓存对象的字符串表示 */public static String trimTail(StringBuffer sb, char tail) {if (sb.length() > 0 && sb.charAt(sb.length() - 1) == tail)sb.deleteCharAt(sb.length() - 1);return sb.toString();}/** * 根据指定分隔符分割字符串,返回结果数组。<br> * 处理规则:<br> * 若输入为null,则返回null;<br> * 否则若输入为空字符串,则返回空数组;<br> * 否则若分隔符为null或空字符串,则返回包含原字符串本身的数组;<br> * 注意:返回结果中过滤掉空字符串 * * @param input * 输入字符串(数字字符串) * @param separator * 分隔符 * @return 结果数组(注意:不包括空字符串) */public static Integer[] splitInt(String input, String separator) {if (input == null)return null;if (input.equals(""))return null;if (separator == null || "".equals(separator))return null;int cursor = 0; // 游标int lastPos = 0; // 指向上一个分隔符后第一个字符ArrayList<Integer> list = new ArrayList<Integer>();while ((cursor = input.indexOf(separator, cursor)) != -1) {if (cursor > lastPos) {// 滤掉空字符串int token = Integer.parseInt(input.substring(lastPos, cursor));list.add(token);}lastPos = cursor + separator.length();cursor = lastPos;}if (lastPos < input.length())list.add(Integer.parseInt(input.substring(lastPos)));Integer[] iStrToI = new Integer[list.size()];for (int i = 0; i < list.size(); i++) {iStrToI[i] = Integer.parseInt(list.get(i).toString());}return iStrToI;}/** * 字符串的转义(处理特殊字符) * * @param input * @return */public static String StringToString(String input) {StringBuilder sb = new StringBuilder();for (int i = 0; i < input.length(); i++) {char c = input.toCharArray()[i];switch (c) {case '\'':sb.append("\\\'");break;case '\"':sb.append("\\\"");break;case '\\':sb.append("\\\\");break;case '/':sb.append("\\/");break;case '\b':sb.append("\\b");break;case '\f':sb.append("\\f");break;case '\n':sb.append("\\n");break;case '\r':sb.append("\\r");break;case '\t':sb.append("\\t");break;default:sb.append(c);break;}}return sb.toString();}/** * list 转换为 string * * @param list * @param flag * @return */public static String listToString(ArrayList<String> list, String flag) {String strMsg = "";int listSize = list.size();if (listSize > 0) {for (int i = 0; i < listSize; i++) {if (i == listSize - 1) {strMsg = strMsg + list.get(i).toString();} else {strMsg = strMsg + list.get(i).toString() + flag;}}} else {strMsg = "";}return strMsg;}/** * 字符串转换为arraylist(必须符合这样的格式([{"a":"a","b":"b"},{"a":"a","b":"b"},{}])) * * @param strList * @return (成功为 arrayList 失败 Exception) * */public static ArrayList<Object> strToList(String strList) {JSONObject oJsonObj = null;ArrayList<Object> listStr = new ArrayList<Object>();int iStriList = strList.length(); // 长度String strDemoList = strList.substring(1, iStriList - 1);// 干掉 []String[] arrInfo = StringUtils.split(strDemoList, "},");int iArrInfo = arrInfo.length;for (int i = 0; i < iArrInfo; i++) {HashMap<String, String> paperMsg = new HashMap<String, String>();try {if (!arrInfo[i].endsWith("}")) {oJsonObj = new JSONObject(arrInfo[i] + "}");} else {oJsonObj = new JSONObject(arrInfo[i]);}Iterator<?> iter2 = oJsonObj.keys();while (iter2.hasNext()) {String key = iter2.next().toString();paperMsg.put(key, oJsonObj.get(key).toString());}listStr.add(paperMsg);// 添加list} catch (JSONException e) {// 出现异常 清空ListlistStr.clear();listStr.add(0, "Exception");}}return listStr;}/** * InputStream转为字符串 * * @param in * @return */public static String toString(InputStream in) throws IOException {StringBuffer out = new StringBuffer();byte[] buffer = new byte[1024];for (int i; (i = in.read(buffer)) != -1;) {out.append(new String(buffer, 0, i));}return out.toString();}/** * 对字符串中的中文进行编码 * * @param inputUrl * @return */public static String encodeUrl(String inputUrl) {if (isBlank(inputUrl))return inputUrl;char[] charArray = inputUrl.toCharArray();for (int i = 0; i < charArray.length; i++) {if ((charArray[i] >= 0x4e00) && (charArray[i] <= 0x9fbb)) {inputUrl = inputUrl.replaceFirst(String.valueOf(charArray[i]), URLEncoder.encode(String.valueOf(charArray[i])));}}return inputUrl;}/** * 截取字符串 * * @param inputUrl * @param length * @return */public static String subString(String inputUrl, int length) {if (isBlank(inputUrl))return inputUrl;if (inputUrl.length() > length) {return inputUrl.substring(0, length);} else {return inputUrl;}}}
0 0
- 【Java|Android】字符串工具类
- android 字符串工具类
- Java字符串工具类
- Java字符串工具类
- java字符串工具类
- 字符串工具类 StringUtil.java
- JAVA常用字符串工具类
- JAVA字符串处理工具类
- 分割java字符串,工具类
- java工具类去掉字符串String中的.点。android开发java程序员常用工具类
- Android字符串操作的工具类
- Android StringUtils-字符串相关工具类
- java字符串日期处理工具类
- Java随机取字符串的工具类
- java解析字符串中的四则运算工具类
- java【工具类】验证字符串,手机号,邮箱...
- java长字符串变短串工具类
- java工具类(处理字符串空)
- java小说登录类
- Imageloader<4>-ImageLoader中的变量
- Spring自定义注解
- note
- GIT入门
- 【Java|Android】字符串工具类
- 文件的读取与写入操作
- vim配置(.vimrc)
- 响应式布局
- 10007---AngularJS 控制器
- View的位置参数
- 基础C ,预处理指令,宏定义,文件包含
- 自已创建Docker Base Image
- get/post 数据请求方式