Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/com/github/rjeschke/neetutils/Strings.java

Issue 5697499218051072: Usage of new API, cleanups (reduced) (Closed)
Patch Set: Created April 11, 2014, 1:31 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/com/github/rjeschke/neetutils/Strings.java
diff --git a/src/com/github/rjeschke/neetutils/Strings.java b/src/com/github/rjeschke/neetutils/Strings.java
new file mode 100644
index 0000000000000000000000000000000000000000..c8d0059733863318f2eef323621dea74a1c0e038
--- /dev/null
+++ b/src/com/github/rjeschke/neetutils/Strings.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2012 René Jeschke <rene_jeschke@yahoo.de>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.github.rjeschke.neetutils;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * String utility methods.
+ *
+ * @author René Jeschke (rene_jeschke@yahoo.de)
+ */
+public class Strings
+{
+ /**
+ * Produces a in Java usable string representation of the given String, wrapping it in quotes and escaping all relevant characters.
+ *
+ * @param str
+ * The String to escape.
+ * @return Escape String or &quote;null&quote; if str is <code>null</code>
+ */
+ public final static String escapeString(final String str)
+ {
+ if (str == null)
+ {
+ return "null";
+ }
+
+ final StringBuilder sb = new StringBuilder();
+
+ sb.append('"');
+ for (int i = 0; i < str.length(); i++)
+ {
+ final char c = str.charAt(i);
+ switch (c)
+ {
+ case '\b':
+ sb.append("\\b");
+ break;
+ case '\f':
+ sb.append("\\f");
+ break;
+ case '\t':
+ sb.append("\\t");
+ break;
+ case '\n':
+ sb.append("\\n");
+ break;
+ case '\r':
+ sb.append("\\r");
+ break;
+ case '"':
+ sb.append("\\\"");
+ break;
+ default:
+ sb.append(c);
+ break;
+ }
+ }
+ sb.append('"');
+
+ return sb.toString();
+ }
+
+ public final static String replace(final String str, final char oldChar, final char newChar)
+ {
+ final StringBuilder sb = new StringBuilder();
+
+ for (int i = 0; i < str.length(); i++)
+ {
+ final char ch = str.charAt(i);
+ if (ch == oldChar)
+ {
+ sb.append(newChar);
+ }
+ else
+ {
+ sb.append(ch);
+ }
+ }
+
+ return sb.toString();
+ }
+
+ public final static List<String> split(final String str, final char ch)
+ {
+ final List<String> ret = new ArrayList<String>();
+
+ if (str != null)
+ {
+ int s = 0, e = 0;
+ while (e < str.length())
+ {
+ if (str.charAt(e) == ch)
+ {
+ ret.add(str.substring(s, e));
+ s = e + 1;
+ }
+ e++;
+ }
+ ret.add(str.substring(s, e));
+ }
+
+ return ret;
+ }
+
+ public final static List<String> trim(final List<String> strings)
+ {
+ for (int i = 0; i < strings.size(); i++)
+ {
+ final String s = strings.get(i);
+ if (s != null)
+ {
+ strings.set(i, s.trim());
+ }
+ }
+ return strings;
+ }
+
+ public final static boolean isEmpty(final String str)
+ {
+ return str == null || str.length() == 0;
+ }
+
+ public final static String collapseWhitespace(final String str)
+ {
+ final StringBuilder sb = new StringBuilder();
+ boolean wasWs = false;
+ for (int i = 0; i < str.length(); i++)
+ {
+ final char c = str.charAt(i);
+ if (Character.isWhitespace(c) || Character.isSpaceChar(c))
+ {
+ if (!wasWs)
+ {
+ sb.append(' ');
+ wasWs = true;
+ }
+ }
+ else
+ {
+ wasWs = false;
+ sb.append(c);
+ }
+ }
+ return sb.toString();
+ }
+
+ public final static String join(final Iterable<String> iterable, final String glue)
+ {
+ final StringBuilder sb = new StringBuilder();
+ int index = 0;
+ for (final String s : iterable)
+ {
+ if (index > 0)
+ {
+ sb.append(glue);
+ }
+ sb.append(s);
+ ++index;
+ }
+
+ return sb.toString();
+ }
+
+ public final static String join(final Iterable<String> iterable)
+ {
+ final StringBuilder sb = new StringBuilder();
+
+ for (final String s : iterable)
+ {
+ sb.append(s);
+ }
+
+ return sb.toString();
+ }
+
+ public final static List<String> splitLength(final String str, final int len)
+ {
+ final List<String> ret = new ArrayList<String>();
+ int todo = str.length();
+ int pos = 0;
+ while (todo > 0)
+ {
+ final int n = Math.min(todo, len);
+ ret.add(str.substring(pos, pos + n));
+ pos += n;
+ todo -= n;
+ }
+ return ret;
+ }
+
+ public final static int firstDiffIndex(final String a, final String b)
+ {
+ final int todo = Math.min(a.length(), b.length());
+ int i = 0;
+ for (; i < todo; i++)
+ {
+ if (a.charAt(i) != b.charAt(i))
+ {
+ break;
+ }
+ }
+ return i;
+ }
+
+ public final static String from(final byte[] bytes, final int offs, final int length, final Charset charset) throws UnsupportedEncodingException
+ {
+ return new String(bytes, offs, length, charset.name());
+ }
+
+ public final static String from(final byte[] bytes, final Charset charset) throws UnsupportedEncodingException
+ {
+ return new String(bytes, charset.name());
+ }
+
+ public final static String from(final byte[] bytes, final int offs, final int length) throws UnsupportedEncodingException
+ {
+ return new String(bytes, offs, length, Charsets.UTF8.name());
+ }
+
+ public final static String from(final byte[] bytes) throws UnsupportedEncodingException
+ {
+ return new String(bytes, Charsets.UTF8.name());
+ }
+}

Powered by Google App Engine
This is Rietveld