package org.deri.grefine.reconcile.util; import java.util.List; import uk.ac.shef.wit.simmetrics.similaritymetrics.Levenshtein; public class StringUtils { /** * @param strings * @param separator * @param perStringPrefix * @param prefi * @param suffix * @return joined string of elements in the list. each element will be prefixed by perStringPrefix, separated by separator * and the total result is prefixed by prefix and suffixed by suffix. Example * join(["str1", "str2"], "> || ", "p=<", "FILTER (", ">)") = "FILTER (p=<str1> || p=<str2>)" */ public static String join(String[] strings, String separator, String perStringPrefix, String prefix, String suffix){ if(strings==null || strings.length==0 || (strings.length==1 && strings[0].isEmpty())){ return ""; } StringBuilder builder = new StringBuilder(prefix); int sizeMinusOne = strings.length -1; for(int i=0; i<sizeMinusOne; i+=1){ String s = strings[i]; builder.append(perStringPrefix).append(s).append(separator); } //the last element without the separator builder.append(perStringPrefix); builder.append(strings[sizeMinusOne]); builder.append(suffix); return builder.toString(); } /** * @param strings * @param separator * @param perStringPrefix * @param prefi * @param suffix * @return joined string of elements in the list. each element will be prefixed by perStringPrefix, separated by separator * and the total result is prefixed by prefix and suffixed by suffix. Example * join(["str1", "str2"], "> || ", "p=<", "FILTER (", ">)") = "FILTER (p=<str1> || p=<str2>)" */ public static String join(List<String> strings, String separator, String perStringPrefix, String prefix, String suffix){ return StringUtils.join(strings.toArray(new String[]{}), separator, perStringPrefix, prefix, suffix); } /** * @param str1 * @param str2 * @return similarity between str1 and str2. current implementation uses Levenshtein */ public static double getLevenshteinScore(String str1, String str2){ return new Levenshtein().getSimilarity(str1.toLowerCase(), str2.toLowerCase()); } }