aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/StringUtils.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-02-12 16:00:28 +0900
committerTadashi G. Takaoka <takaoka@google.com>2013-02-12 16:18:19 +0900
commitb3fd70118119e736209173d34053974e61f936d8 (patch)
tree3ffb05ef34748b9b58535fbd46770f4b647dc008 /java/src/com/android/inputmethod/latin/StringUtils.java
parent0b49191797071d6674cae46eea9f76a8947945da (diff)
downloadlatinime-b3fd70118119e736209173d34053974e61f936d8.tar.gz
latinime-b3fd70118119e736209173d34053974e61f936d8.tar.xz
latinime-b3fd70118119e736209173d34053974e61f936d8.zip
Move parseCsvString to StringUtils
Change-Id: I602f33991ca57b6057ec2defe01573552b322857
Diffstat (limited to 'java/src/com/android/inputmethod/latin/StringUtils.java')
-rw-r--r--java/src/com/android/inputmethod/latin/StringUtils.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/StringUtils.java b/java/src/com/android/inputmethod/latin/StringUtils.java
index d00edbe92..6fac0d2d3 100644
--- a/java/src/com/android/inputmethod/latin/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/StringUtils.java
@@ -372,4 +372,42 @@ public final class StringUtils {
// Here we arrived at the start of the line. This should behave exactly like whitespace.
return (START == state || LETTER == state) ? noCaps : caps;
}
+
+ public static String[] parseCsvString(final String text) {
+ final int size = text.length();
+ if (size == 0) {
+ return null;
+ }
+ if (codePointCount(text) == 1) {
+ return text.codePointAt(0) == Constants.CSV_SEPARATOR ? null : new String[] { text };
+ }
+
+ ArrayList<String> list = null;
+ int start = 0;
+ for (int pos = 0; pos < size; pos++) {
+ final char c = text.charAt(pos);
+ if (c == Constants.CSV_SEPARATOR) {
+ // Skip empty entry.
+ if (pos - start > 0) {
+ if (list == null) {
+ list = CollectionUtils.newArrayList();
+ }
+ list.add(text.substring(start, pos));
+ }
+ // Skip comma
+ start = pos + 1;
+ } else if (c == Constants.CSV_ESCAPE) {
+ // Skip escape character and escaped character.
+ pos++;
+ }
+ }
+ final String remain = (size - start > 0) ? text.substring(start) : null;
+ if (list == null) {
+ return remain != null ? new String[] { remain } : null;
+ }
+ if (remain != null) {
+ list.add(remain);
+ }
+ return list.toArray(new String[list.size()]);
+ }
}