package com.base.utils; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import android.graphics.Color; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; import android.text.style.BackgroundColorSpan; public class StringUtil { /** * 将输入流转化成字符串 * * @param inputStream输入流 * @param encoding * 字符编码类型,如果encoding传入null,则默认使用utf-8编码。 * @return 字符串 * @throws IOException * @author lvmeng */ public static String inputToString(InputStream inputStream, String encoding) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } inputStream.close(); bos.close(); if (TextUtils.isEmpty(encoding)) { encoding = "UTF-8"; } return new String(bos.toByteArray(), encoding); } /** * 设置需要高亮的字 * * @param wholeText * 原始字符串 * @param spanableText * 需要高亮的字符串 * @return 高亮后的字符串 */ public static SpannableString getSpanableText(String wholeText, String spanableText) { if (TextUtils.isEmpty(wholeText)) wholeText = ""; SpannableString spannableString = new SpannableString(wholeText); if (spanableText.equals("")) return spannableString; wholeText = wholeText.toLowerCase(); spanableText = spanableText.toLowerCase(); int startPos = wholeText.indexOf(spanableText); if (startPos == -1) { int tmpLength = spanableText.length(); String tmpResult = ""; for (int i = 1; i <= tmpLength; i++) { tmpResult = spanableText.substring(0, tmpLength - i); int tmpPos = wholeText.indexOf(tmpResult); if (tmpPos == -1) { tmpResult = spanableText.substring(i, tmpLength); tmpPos = wholeText.indexOf(tmpResult); } if (tmpPos != -1) break; tmpResult = ""; } if (tmpResult.length() != 0) { return getSpanableText(wholeText, tmpResult); } else { return spannableString; } } int endPos = startPos + spanableText.length(); do { endPos = startPos + spanableText.length(); spannableString.setSpan(new BackgroundColorSpan(Color.YELLOW), startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); startPos = wholeText.indexOf(spanableText, endPos); } while (startPos != -1); return spannableString; } }