package com.idega.util; import java.io.IOException; import java.io.LineNumberReader; import java.io.StringReader; import java.text.CharacterIterator; import java.text.StringCharacterIterator; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class StringUtil { public static List<String> getValuesFromString(String value, String separator) { if (value == null || separator == null) return null; String[] values = value.split(separator); if (values == null) return null; List<String> extractedValues = new ArrayList<String>(); Collections.addAll(extractedValues, values); return extractedValues; } /** * Handy method for null and empty check * @param string to check if is null or empty string * @return return str == null || str.length() == 0; */ public static boolean isEmpty(String str) { return str == null || str.length() == 0; } /** * Escape characters for text appearing in HTML markup. * * <P>The following characters are replaced with corresponding HTML character entities : * <table border='1' cellpadding='3' cellspacing='0'> * <tr><th> Character </th><th>Replacement</th></tr> * <tr><td> < </td><td> "<" </td></tr> * <tr><td> > </td><td> > </td></tr> * <tr><td> & </td><td> & </td></tr> * <tr><td> " </td><td> "</td></tr> * <tr><td> \t </td><td> </td></tr> * <tr><td> ! </td><td> !</td></tr> * <tr><td> # </td><td> #</td></tr> * <tr><td> $ </td><td> $</td></tr> * <tr><td> % </td><td> %</td></tr> * <tr><td> ' </td><td> '</td></tr> * <tr><td> ( </td><td> (</td></tr> * <tr><td> ) </td><td> )</td></tr> * <tr><td> * </td><td> *</td></tr> * <tr><td> + </td><td> + </td></tr> * <tr><td> , </td><td> , </td></tr> * <tr><td> - </td><td> - </td></tr> * <tr><td> . </td><td> . </td></tr> * <tr><td> / </td><td> / </td></tr> * <tr><td> : </td><td> :</td></tr> * <tr><td> ; </td><td> ;</td></tr> * <tr><td> = </td><td> =</td></tr> * <tr><td> ? </td><td> ?</td></tr> * <tr><td> @ </td><td> @</td></tr> * <tr><td> [ </td><td> [</td></tr> * <tr><td> \ </td><td> \</td></tr> * <tr><td> ] </td><td> ]</td></tr> * <tr><td> ^ </td><td> ^</td></tr> * <tr><td> _ </td><td> _</td></tr> * <tr><td> ` </td><td> `</td></tr> * <tr><td> { </td><td> {</td></tr> * <tr><td> | </td><td> |</td></tr> * <tr><td> } </td><td> }</td></tr> * <tr><td> ~ </td><td> ~</td></tr> * </table> */ public static String escapeHTMLSpecialChars(String aText){ StringBuilder result = new StringBuilder(); StringCharacterIterator iterator = new StringCharacterIterator(aText); char character = iterator.current(); while (character != CharacterIterator.DONE ){ if (character == '<') { result.append("<"); } else if (character == '>') { result.append(">"); } else if (character == '&') { result.append("&"); } else if (character == '\"') { result.append("""); } else if (character == '\t') { addCharEntity(9, result); } else if (character == '!') { addCharEntity(33, result); } else if (character == '#') { addCharEntity(35, result); } else if (character == '$') { addCharEntity(36, result); } else if (character == '%') { addCharEntity(37, result); } else if (character == '\'') { addCharEntity(39, result); } else if (character == '(') { addCharEntity(40, result); } else if (character == ')') { addCharEntity(41, result); } else if (character == '*') { addCharEntity(42, result); } else if (character == '+') { addCharEntity(43, result); } else if (character == ',') { addCharEntity(44, result); } else if (character == '-') { addCharEntity(45, result); } else if (character == '.') { addCharEntity(46, result); } else if (character == '/') { addCharEntity(47, result); } else if (character == ':') { addCharEntity(58, result); } else if (character == ';') { addCharEntity(59, result); } else if (character == '=') { addCharEntity(61, result); } else if (character == '?') { addCharEntity(63, result); } else if (character == '@') { addCharEntity(64, result); } else if (character == '[') { addCharEntity(91, result); } else if (character == '\\') { addCharEntity(92, result); } else if (character == ']') { addCharEntity(93, result); } else if (character == '^') { addCharEntity(94, result); } else if (character == '_') { addCharEntity(95, result); } else if (character == '`') { addCharEntity(96, result); } else if (character == '{') { addCharEntity(123, result); } else if (character == '|') { addCharEntity(124, result); } else if (character == '}') { addCharEntity(125, result); } else if (character == '~') { addCharEntity(126, result); } else { //the char is not a special one //add it to the result as is result.append(character); } character = iterator.next(); } return result.toString(); } private static void addCharEntity(Integer aIdx, StringBuilder aBuilder){ String padding = ""; if( aIdx <= 9 ){ padding = "00"; } else if( aIdx <= 99 ){ padding = "0"; } else { //no prefix } String number = padding + aIdx.toString(); aBuilder.append("&#" + number + ";"); } /** * Escape characters not allowed in file names; * * @param pdfName * @return escaped file name; */ public static String escapeFileNameSpecialCharacters(String fileName) { StringBuilder result = new StringBuilder(); StringCharacterIterator iterator = new StringCharacterIterator(fileName); char character = iterator.current(); while (character != CharacterIterator.DONE) { switch (character) { case '/': case '\\': case ':': case '|': case '?': case '%': case '*': case '>': case '<': { result.append("_").append((int) (character)).append("_"); break; } default: // the char is not a special one // add it to the result as is result.append(character); } character = iterator.next(); } return result.toString(); } public static List<String> getLinesFromString(String content) { List<String> strings = new ArrayList<String>(); LineNumberReader lineReader = new LineNumberReader(new StringReader(content)); try { lineReader.mark(1); while (lineReader.read() != -1) { lineReader.reset(); strings.add(lineReader.readLine()); lineReader.mark(1); } } catch(IOException e) { e.printStackTrace(); } finally { IOUtil.closeReader(lineReader); } return strings; } }