/******************************************************************************* * Copyright 2012-present Pixate, Inc. * * 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.pixate.freestyle.util; import java.util.Locale; public class StringUtil { public static final String EMPTY = ""; /** * Returns <code>true</code> if the given string is <code>null</code> or * empty. * * @param str * @return <code>true</code> if the given string is <code>null</code> or * empty; <code>false</code> otherwise. */ public static boolean isEmpty(String str) { return str == null || str.isEmpty(); } /** * Returns <code>true</code> if the given string, when lower-cased, is * exactly "true" or "yes". * * @param value * @return <code>true</code> if the given string, when lower-cased, is * exactly "true" or "yes", else <code>false</code>. */ public static boolean toBoolean(final String value) { if (isEmpty(value)) { return false; } // Specify locale per Android lint suggestions. String lc = value.toLowerCase(Locale.US); return "true".equals(lc) || "yes".equals(lc); } /** * Join a string array into a single string. The given delimiter will be * inserted between the string parts. * * @param parts * @param delimiter * @return a joint string. */ public static String join(String[] parts, String delimiter) { StringBuilder builder = new StringBuilder(); for (String s : parts) { builder.append(s).append(delimiter); } if (builder.length() > 0) { return builder.substring(0, builder.length() - delimiter.length()); } return EMPTY; } /** * Join a strings {@link Iterable} into a single string. The given delimiter * will be inserted between the string parts. * * @param parts * @param delimiter * @return a joint string. */ public static String join(Iterable<String> parts, String delimiter) { StringBuilder builder = new StringBuilder(); for (String s : parts) { builder.append(s).append(delimiter); } if (builder.length() > 0) { return builder.substring(0, builder.length() - delimiter.length()); } return EMPTY; } public static boolean contains(String[] components, String value) { if (components == null || value == null) { return false; } for (String str : components) { if (str.equals(value)) { return true; } } return false; } /** * Truncates the string to a particular length while appending ... to the * end. * * @param text the string to be truncated * @param length the length to truncate to * @return the truncated string */ public static String truncate(String text, int length) { if (text == null || text.length() <= length) { return text; } return text.substring(0, length - 3) + "..."; } public static int compare(String lhs, String rhs) { if (lhs == null) { return rhs == null ? 0 : 1; } return rhs == null ? -1 : lhs.compareTo(rhs); } }