package edu.harvard.iq.dataverse.util; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.jsoup.Jsoup; /** * * @author skraffmiller */ public class StringUtil { public static final boolean isEmpty(String str) { return str==null || str.trim().equals(""); } public static String nullToEmpty(String inString) { return inString == null ? "" : inString; } public static final boolean isAlphaNumeric(String str) { final char[] chars = str.toCharArray(); for (int x = 0; x < chars.length; x++) { final char c = chars[x]; if(! isAlphaNumericChar(c)) { return false; } } return true; } public static final boolean isAlphaNumericChar(char c) { // TODO: consider using Character.isLetterOrDigit(c) return ( (c >= 'a') && (c <= 'z') || (c >= 'A') && (c <= 'Z') || (c >= '0') && (c <= '9') ); } public static String truncateString(String originalString, int maxLength) { maxLength = Math.max( 0, maxLength); String finalString = originalString; if (finalString != null && finalString.length() > maxLength) { String regexp = "[A-Za-z0-9][\\p{Space}]"; Pattern pattern = Pattern.compile(regexp); String startParsedString = finalString.substring(0, maxLength); String endParsedString = finalString.substring(maxLength, finalString.length()); Matcher matcher = pattern.matcher(endParsedString); boolean found = matcher.find(); if (found) { endParsedString = endParsedString.substring(0, matcher.end()); finalString = startParsedString + endParsedString + "<span class='dvn_threedots'>...</span>"; } } return finalString; } public static String html2text(String html) { if (html == null) { return null; } return Jsoup.parse(html).text(); } /** * @return A list of clean strings or an empty list. */ public static List<String> htmlArray2textArray(List<String> htmlArray) { List<String> cleanTextArray = new ArrayList<>(); if (htmlArray == null) { return cleanTextArray; } for (String html : htmlArray) { cleanTextArray.add(Jsoup.parse(html).text()); } return cleanTextArray; } }