JAL-4059 Converting Pattern/Matcher methods that are possibly incompatible with JS...
[jalview.git] / src / jalview / util / StringUtils.java
index ff1c944..9212c8e 100644 (file)
  */
 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.Pattern;
 
 public class StringUtils
@@ -178,6 +177,8 @@ public class StringUtils
       cp = pos + seplen;
       wasescaped = escape == -1;
       // last separator may be in an unmatched quote
+      // private static final Pattern DELIMITERS_PATTERN =
+      // Pattern.compile(".*='[^']*(?!')");
       wasquoted = DELIMITERS_PATTERN.matcher(lstitem).matches();
     }
     if (cp < input.length())
@@ -202,18 +203,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 +250,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 +414,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);
   }
 
   /**
@@ -584,4 +586,69 @@ public class StringUtils
     }
     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)
+  {
+    // Rewritten to not use regex for Jalviewjs. Probably more efficient this
+    // way anyway.
+    if (text == null)
+    {
+      return -1;
+    }
+    for (int i = 0; i < text.length(); i++)
+    {
+      if (Character.isWhitespace(text.charAt(i)))
+      {
+        return i;
+      }
+    }
+    return -1;
+  }
+
+  /*
+   * 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<String> l)
+  {
+    int max = 0;
+    for (String s : l)
+    {
+      if (s == null)
+        continue;
+      if (s.length() > max)
+        max = s.length();
+    }
+    return max;
+  }
 }