package heufybot.utils; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; public class StringUtils { public static String join(Collection<String> strings, String sep) { StringBuilder builder = new StringBuilder(); Iterator<String> itr = strings.iterator(); while (itr.hasNext()) { builder.append(itr.next()); if (itr.hasNext()) { builder.append(sep); } } return builder.toString(); } public static List<String> parseStringtoList(String input, String split) { List<String> list = new ArrayList<String>(); String[] splitted = input.split(split); for (String element : splitted) { list.add(element); } return list; } public static String escapeRegex(String regex) { return regex.replaceAll("\\*", "\\*").replaceAll("\\+", "\\\\+").replaceAll("\\|", "\\\\|") .replaceAll("\\{", "\\\\{").replaceAll("\\[", "\\\\[").replaceAll("\\(", "\\\\(") .replaceAll("\\)", "\\\\)").replaceAll("\\^", "\\\\^").replaceAll("\\$", "\\\\$") .replaceAll("\\.", "\\\\.").replaceAll("\\#", "\\\\#").replaceAll("\\~", "") .replaceAll(" ", ""); } public static String toValid3ByteUTF8String(String s) { int length = s.length(); StringBuilder b = new StringBuilder(length); for (int offset = 0; offset < length; ) { final int codepoint = s.codePointAt(offset); if (codepoint > new String("\uFFFF").codePointAt(0)) { b.append("\uFFFD"); } else { if (Character.isValidCodePoint(codepoint)) { b.appendCodePoint(codepoint); } else { b.append("\uFFFD"); } } offset += Character.charCount(codepoint); } return b.toString(); } public static String removeColors(String line) { int length = line.length(); StringBuilder buffer = new StringBuilder(); int i = 0; while (i < length) { char ch = line.charAt(i); if (ch == '\u0003') { i++; if (i < length) { ch = line.charAt(i); if (Character.isDigit(ch)) { i++; if (i < length) { ch = line.charAt(i); if (Character.isDigit(ch)) { i++; } } if (i < length) { ch = line.charAt(i); if (ch == ',') { i++; if (i < length) { ch = line.charAt(i); if (Character.isDigit(ch)) { i++; if (i < length) { ch = line.charAt(i); if (Character.isDigit(ch)) { i++; } } } else { i--; } } else { i--; } } } } } } else if (ch == '\u000f') { i++; } else { buffer.append(ch); i++; } } return buffer.toString(); } public static String removeFormatting(String line) { int length = line.length(); StringBuilder buffer = new StringBuilder(); for (int i = 0; i < length; i++) { char ch = line.charAt(i); if (ch == '\u000f' || ch == '\u0002' || ch == '\u001f' || ch == '\u0016') { // Don't add this character. } else { buffer.append(ch); } } return buffer.toString(); } public static String removeFormattingAndColors(String line) { return removeFormatting(removeColors(line)); } public static int tryParseInt(String intString) { try { return Integer.parseInt(intString); } catch (NumberFormatException e) { return -1; } } public static long tryParseLong(String longString) { try { return Long.parseLong(longString); } catch (NumberFormatException e) { return -1; } } public static double tryParseDouble(String doubleString) { try { return Double.parseDouble(doubleString); } catch (NumberFormatException e) { return -1; } } }