X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FStringUtils.java;h=89bc36d65d72904132bc833a3b62c83130a5e5a9;hb=HEAD;hp=bf5b87a4f873a2ba9185109467cb4c5ef634fc9d;hpb=9d2408483e451285fd555c3cd6e0273977acbaa7;p=jalview.git diff --git a/src/jalview/util/StringUtils.java b/src/jalview/util/StringUtils.java index bf5b87a..89bc36d 100644 --- a/src/jalview/util/StringUtils.java +++ b/src/jalview/util/StringUtils.java @@ -20,12 +20,12 @@ */ package jalview.util; -import java.util.Locale; - import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; +import java.util.Locale; +import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtils @@ -202,18 +202,18 @@ public class StringUtils jv.clear(); if (DEBUG) { - System.err.println("Array from '" + delimiter + jalview.bin.Console.errPrintln("Array from '" + delimiter + "' separated List:\n" + v.length); for (int i = 0; i < v.length; i++) { - System.err.println("item " + i + " '" + v[i] + "'"); + jalview.bin.Console.errPrintln("item " + i + " '" + v[i] + "'"); } } return v; } if (DEBUG) { - System.err.println( + jalview.bin.Console.errPrintln( "Empty Array from '" + delimiter + "' separated List"); } return null; @@ -249,13 +249,13 @@ public class StringUtils { System.err .println("Returning '" + separator + "' separated List:\n"); - System.err.println(v); + jalview.bin.Console.errPrintln(v); } return v.toString(); } if (DEBUG) { - System.err.println( + jalview.bin.Console.errPrintln( "Returning empty '" + separator + "' separated List\n"); } return "" + separator; @@ -413,7 +413,8 @@ public class StringUtils { return s.toUpperCase(Locale.ROOT); } - return s.substring(0, 1).toUpperCase(Locale.ROOT) + s.substring(1).toLowerCase(Locale.ROOT); + return s.substring(0, 1).toUpperCase(Locale.ROOT) + + s.substring(1).toLowerCase(Locale.ROOT); } /** @@ -448,7 +449,7 @@ public class StringUtils { text = text.substring(0, endTag); } - + if (startTag == -1 && (text.contains("<") || text.contains(">"))) { text = text.replaceAll("<", "<"); @@ -458,8 +459,8 @@ public class StringUtils } /** - * Answers the input string with any occurrences of the 'encodeable' characters - * replaced by their URL encoding + * Answers the input string with any occurrences of the 'encodeable' + * characters replaced by their URL encoding * * @param s * @param encodable @@ -570,4 +571,77 @@ public class StringUtils } return enc; } + + public static int firstCharPosIgnoreCase(String text, String chars) + { + int min = text.length() + 1; + for (char c : chars.toLowerCase(Locale.ROOT).toCharArray()) + { + int i = text.toLowerCase(Locale.ROOT).indexOf(c); + if (0 <= i && i < min) + { + min = i; + } + } + return min < text.length() + 1 ? min : -1; + } + + public static boolean equalsIgnoreCase(String s1, String s2) + { + if (s1 == null || s2 == null) + { + return s1 == s2; + } + return s1.toLowerCase(Locale.ROOT).equals(s2.toLowerCase(Locale.ROOT)); + } + + public static int indexOfFirstWhitespace(String text) + { + int index = -1; + Pattern pat = Pattern.compile("\\s"); + Matcher m = pat.matcher(text); + if (m.find()) + { + index = m.start(); + } + return index; + } + + /* + * implementation of String.replaceLast. + * Replaces only the last occurrence of toReplace in string with replacement. + */ + public static String replaceLast(String string, String toReplace, + String replacement) + { + int pos = string.lastIndexOf(toReplace); + if (pos > -1) + { + return new StringBuilder().append(string.substring(0, pos)) + .append(replacement) + .append(string.substring(pos + toReplace.length())) + .toString(); + } + else + { + return string; + } + + } + + /* + * return the maximum length of a List of Strings + */ + public static int maxLength(List l) + { + int max = 0; + for (String s : l) + { + if (s == null) + continue; + if (s.length() > max) + max = s.length(); + } + return max; + } }