package edu.berkeley.cs.nlp.ocular.util; import java.util.List; /** * @author Dan Garrette (dhgarrette@gmail.com) */ public class StringHelper { public static String toUnicode(String s) { //if (s.length() != 1) throw new RuntimeException("toUnicode input must be a single character"); StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.length(); ++i) sb.append(toUnicode(s.charAt(i))); return sb.toString(); } public static String toUnicode(char c) { return "\\u" + Integer.toHexString(c | 0x10000).substring(1); } public static String take(String s, int n) { if (n <= 0) return ""; else if (n < s.length()) return s.substring(0, n); else return s; } public static String drop(String s, int n) { if (n <= 0) return s; else if (n < s.length()) return s.substring(n); else return ""; } public static String last(String s) { if (s.isEmpty()) throw new IllegalArgumentException("cannot get `last` of empty string"); return s.substring(s.length() - 1); } public static String join(String... xs) { StringBuilder sb = new StringBuilder(); for (String x : xs) sb.append(x); return sb.toString(); } public static String join(List<String> xs) { StringBuilder sb = new StringBuilder(); for (String x : xs) sb.append(x); return sb.toString(); } public static String join(List<String> xs, String sep) { int sepLen = sep.length(); StringBuilder sb = new StringBuilder(); for (String x : xs) sb.append(x).append(sep); return sb.length() > 0 ? sb.delete(sb.length() - sepLen, sb.length()).toString() : ""; } public static boolean equals(String a, String b) { if (a == null) return b == null; else return a.equals(b); } public static int longestCommonPrefix(String a, String b) { int i = 0; char[] as = a.toCharArray(); char[] bs = b.toCharArray(); int aLen = as.length; int bLen = bs.length; while (i < aLen && i < bLen && as[i] == bs[i]) ++i; return i; } }