package com.mistareader.TextProcessors; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import android.util.Log; public class StringProcessor { public static String mista_URL_EncodePlus(String str) { String ret = str; try { str.replace("+", "___plus___"); ret = URLEncoder.encode(str, "windows-1251").replace("+", "%20"); } catch (UnsupportedEncodingException e) { S.L("mista_URL_Encode: " + Log.getStackTraceString(e)); } return ret; } public static String mista_URL_Encode(String str) { String ret = str; try { ret = URLEncoder.encode(str, "windows-1251").replace("+", "%20"); } catch (UnsupportedEncodingException e) { S.L("mista_URL_Encode: " + Log.getStackTraceString(e)); } return ret; } public static String unescapeSimple(String input) { final int MIN_ESCAPE = 2; final int MAX_ESCAPE = 6; StringWriter writer = null; int len = input.length(); int i = 1; int st = 0; while (true) { // look for '&' while (i < len && input.charAt(i - 1) != '&') i++; if (i >= len) break; // found '&', look for ';' int j = i; while (j < len && j < i + MAX_ESCAPE + 1 && input.charAt(j) != ';') j++; if (j == len || j < i + MIN_ESCAPE || j == i + MAX_ESCAPE + 1) { i++; continue; } // named escape CharSequence value = lookupMap.get(input.substring(i, j)); if (value == null) { i++; continue; } if (writer == null) writer = new StringWriter(input.length()); writer.append(input.substring(st, i - 1)); writer.append(value); // skip escape st = j + 1; i = st; } if (writer != null) { writer.append(input.substring(st, len)); return writer.toString(); } return input; } private static final String[][] ESCAPES = { { "\"", "quot" }, // " - double-quote { "&", "amp" }, // & - ampersand { "<", "lt" }, // < - less-than { ">", "gt" }, // > - greater-than }; private static final HashMap<String, CharSequence> lookupMap; static { lookupMap = new HashMap<String, CharSequence>(); for (final CharSequence[] seq : ESCAPES) lookupMap.put(seq[1].toString(), seq[0]); } }