summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/everge/StringUtils.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2019-06-18 17:44:32 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2019-06-18 17:44:32 -0400
commitd86cbcbabc4b251956bd2c5bf4dfa459a00bb239 (patch)
tree082ad1a1aa76d2519a3226bbaf2f190f6aa931a9 /src/main/java/bjc/everge/StringUtils.java
parent1e01c5df99434be2e44bcac1d6c79486082935b1 (diff)
Lots of frontend work
Diffstat (limited to 'src/main/java/bjc/everge/StringUtils.java')
-rw-r--r--src/main/java/bjc/everge/StringUtils.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/main/java/bjc/everge/StringUtils.java b/src/main/java/bjc/everge/StringUtils.java
new file mode 100644
index 0000000..3f19b8f
--- /dev/null
+++ b/src/main/java/bjc/everge/StringUtils.java
@@ -0,0 +1,65 @@
+package bjc.everge;
+
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Utility methods for strings.
+ *
+ * @author Ben Culkin.
+ */
+public class StringUtils {
+ /**
+ * Split a string on every occurance of a string not preceeded by an escape.
+ *
+ * @param escape
+ * The escape that stops splitting.
+ * @param splat
+ * The string to split on.
+ * @param inp
+ * The string to split.
+ * @return The string split as specified above.
+ */
+ public static String[] escapeSplit(String escape, String splat, String inp) {
+ if (escape == null || escape.equals("")) {
+ return inp.split(splat);
+ }
+
+ List<String> ret = new ArrayList<>();
+
+ String wrk = inp;
+ int idx = wrk.indexOf(splat);
+
+ // System.err.printf("[DEBUG] 'hard' escapeSplit: (%s) (%s) (%s) init: %d\n",
+ // escape, splat, inp, idx);
+
+ while (idx != -1) {
+ while (idx != -1 && wrk.regionMatches(idx - 1, escape, 0, escape.length())) {
+ int oidx = wrk.indexOf(splat, idx + 1);
+ // System.err.printf("[TRACE] idx: %d, oidx: %d\n", idx, oidx);
+ idx = oidx;
+ }
+
+ if (idx == -1) {
+ break;
+ }
+
+ // System.err.printf("[TRACE] sliced string into (%s) and (%s) at %d\n",
+ // wrk.substring(0, idx), wrk.substring(idx), idx);
+ String tmp = wrk.substring(0, idx);
+ ret.add(tmp);
+ if (wrk.endsWith(tmp)) {
+ wrk = "";
+ } else {
+ wrk = wrk.substring(idx + splat.length());
+ }
+
+ idx = wrk.indexOf(splat);
+ }
+
+ if (!wrk.equals("")) ret.add(wrk);
+
+ return ret.toArray(new String[0]);
+ }
+}