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;
}
}