aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/StringUtils.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-02-11 23:59:49 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2013-02-11 23:59:49 -0800
commitf6716e651f168bdae86a7ab5b438cb0039bd59b0 (patch)
tree7a6cb8b260af45b6afe73cb3393850ff1d294683 /java/src/com/android/inputmethod/latin/StringUtils.java
parentd16059f9185f2ab3fb5c987ab69649ca13685d46 (diff)
parent2c2942dd4bdea8581191866e2f06a0fa9dec18ed (diff)
downloadlatinime-f6716e651f168bdae86a7ab5b438cb0039bd59b0.tar.gz
latinime-f6716e651f168bdae86a7ab5b438cb0039bd59b0.tar.xz
latinime-f6716e651f168bdae86a7ab5b438cb0039bd59b0.zip
am 2c2942dd: Merge "Move parseCsvString to StringUtils"
# Via Android (Google) Code Review (1) and Tadashi G. Takaoka (1) * commit '2c2942dd4bdea8581191866e2f06a0fa9dec18ed': Move parseCsvString to StringUtils
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()]);
+ }
}