/** * Decode a string using marked hex values e.g. %20 * * @param str String to decode * @param marker The marker charcater * @return Decoded string (returns input object on no change) */ public static String decodeHex(String str, char marker) { int idx = str.indexOf(marker); if ( idx == -1 ) return str; StringBuilder buff = new StringBuilder(); buff.append(str, 0, idx); int N = str.length(); for ( ; idx < N ; idx++ ) { char ch = str.charAt(idx); // First time through this is true, always. if ( ch != marker ) buff.append(ch); else { char hi = str.charAt(idx + 1); char lo = str.charAt(idx + 2); char ch2 = (char)(hexDecode(hi) << 4 | hexDecode(lo)); buff.append(ch2); idx += 2; } } return buff.toString(); }
/** * Decode a string using marked hex values e.g. %20 * * @param str String to decode * @param marker The marker charcater * @return Decoded string (returns input object on no change) */ public static String decodeHex(String str, char marker) { int idx = str.indexOf(marker); if ( idx == -1 ) return str; StringBuilder buff = new StringBuilder(); buff.append(str, 0, idx); int N = str.length(); for ( ; idx < N ; idx++ ) { char ch = str.charAt(idx); // First time through this is true, always. if ( ch != marker ) buff.append(ch); else { char hi = str.charAt(idx + 1); char lo = str.charAt(idx + 2); char ch2 = (char)(hexDecode(hi) << 4 | hexDecode(lo)); buff.append(ch2); idx += 2; } } return buff.toString(); }