org.dbflute.lasta.di.util.LdiStringUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lasta-di Show documentation
Show all versions of lasta-di Show documentation
DI Container for LastaFlute, super forked from Seasar as Java8
The newest version!
/*
* Copyright 2014-2015 the original author or authors.
*
* 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 org.dbflute.lasta.di.util;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
/**
* @author modified by jflute (originated in Seasar)
*/
public class LdiStringUtil {
public static final String[] EMPTY_STRINGS = new String[0];
protected LdiStringUtil() {
}
public static final boolean isEmpty(final String text) {
return text == null || text.length() == 0;
}
public static final boolean isNotEmpty(final String text) {
return !isEmpty(text);
}
public static final String replace(final String text, final String fromText, final String toText) {
if (text == null || fromText == null || toText == null) {
return null;
}
StringBuilder buf = new StringBuilder(100);
int pos = 0;
int pos2 = 0;
while (true) {
pos = text.indexOf(fromText, pos2);
if (pos == 0) {
buf.append(toText);
pos2 = fromText.length();
} else if (pos > 0) {
buf.append(text.substring(pos2, pos));
buf.append(toText);
pos2 = pos + fromText.length();
} else {
buf.append(text.substring(pos2));
break;
}
}
return buf.toString();
}
public static String[] split(final String str, final String delim) {
if (isEmpty(str)) {
return EMPTY_STRINGS;
}
List list = new ArrayList();
StringTokenizer st = new StringTokenizer(str, delim);
while (st.hasMoreElements()) {
list.add(st.nextElement());
}
return (String[]) list.toArray(new String[list.size()]);
}
public static final String ltrim(final String text) {
return ltrim(text, null);
}
public static final String ltrim(final String text, String trimText) {
if (text == null) {
return null;
}
if (trimText == null) {
trimText = " ";
}
int pos = 0;
for (; pos < text.length(); pos++) {
if (trimText.indexOf(text.charAt(pos)) < 0) {
break;
}
}
return text.substring(pos);
}
public static final String rtrim(final String text) {
return rtrim(text, null);
}
public static final String rtrim(final String text, String trimText) {
if (text == null) {
return null;
}
if (trimText == null) {
trimText = " ";
}
int pos = text.length() - 1;
for (; pos >= 0; pos--) {
if (trimText.indexOf(text.charAt(pos)) < 0) {
break;
}
}
return text.substring(0, pos + 1);
}
public static final String trimSuffix(final String text, final String suffix) {
if (text == null) {
return null;
}
if (suffix == null) {
return text;
}
if (text.endsWith(suffix)) {
return text.substring(0, text.length() - suffix.length());
}
return text;
}
public static final String trimPrefix(final String text, final String prefix) {
if (text == null) {
return null;
}
if (prefix == null) {
return text;
}
if (text.startsWith(prefix)) {
return text.substring(prefix.length());
}
return text;
}
public static String decapitalize(final String name) {
if (isEmpty(name)) {
return name;
}
char chars[] = name.toCharArray();
if (chars.length >= 2 && Character.isUpperCase(chars[0]) && Character.isUpperCase(chars[1])) {
return name;
}
chars[0] = Character.toLowerCase(chars[0]);
return new String(chars);
}
public static String capitalize(final String name) {
if (isEmpty(name)) {
return name;
}
char chars[] = name.toCharArray();
chars[0] = Character.toUpperCase(chars[0]);
return new String(chars);
}
public static boolean startsWith(final String text, final String fragment) {
return startsWithIgnoreCase(text, fragment);
}
public static boolean isBlank(final String str) {
if (str == null || str.length() == 0) {
return true;
}
for (int i = 0; i < str.length(); i++) {
if (!Character.isWhitespace(str.charAt(i))) {
return false;
}
}
return true;
}
public static boolean isNotBlank(final String str) {
return !isBlank(str);
}
public static boolean contains(final String str, final char ch) {
if (isEmpty(str)) {
return false;
}
return str.indexOf(ch) >= 0;
}
public static boolean contains(final String s1, final String s2) {
if (isEmpty(s1)) {
return false;
}
return s1.indexOf(s2) >= 0;
}
public static boolean equals(final String target1, final String target2) {
return (target1 == null) ? (target2 == null) : target1.equals(target2);
}
public static boolean equalsIgnoreCase(final String target1, final String target2) {
return (target1 == null) ? (target2 == null) : target1.equalsIgnoreCase(target2);
}
public static boolean endsWithIgnoreCase(final String target1, final String target2) {
if (target1 == null || target2 == null) {
return false;
}
int length1 = target1.length();
int length2 = target2.length();
if (length1 < length2) {
return false;
}
String s1 = target1.substring(length1 - length2);
return s1.equalsIgnoreCase(target2);
}
public static boolean startsWithIgnoreCase(final String target1, final String target2) {
if (target1 == null || target2 == null) {
return false;
}
int length1 = target1.length();
int length2 = target2.length();
if (length1 < length2) {
return false;
}
String s1 = target1.substring(0, target2.length());
return s1.equalsIgnoreCase(target2);
}
public static String substringFromLast(final String str, final String separator) {
if (isEmpty(str) || isEmpty(separator)) {
return str;
}
int pos = str.lastIndexOf(separator);
if (pos == -1) {
return str;
}
return str.substring(0, pos);
}
public static String substringToLast(final String str, final String separator) {
if (isEmpty(str) || isEmpty(separator)) {
return str;
}
int pos = str.lastIndexOf(separator);
if (pos == -1) {
return str;
}
return str.substring(pos + 1, str.length());
}
public static String toHex(final byte[] bytes) {
if (bytes == null) {
return "";
}
StringBuffer sb = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; ++i) {
appendHex(sb, bytes[i]);
}
return sb.toString();
}
public static String toHex(final int i) {
StringBuffer buf = new StringBuffer();
appendHex(buf, i);
return buf.toString();
}
public static void appendHex(final StringBuffer buf, final byte i) {
buf.append(Character.forDigit((i & 0xf0) >> 4, 16));
buf.append(Character.forDigit((i & 0x0f), 16));
}
public static void appendHex(final StringBuffer buf, final int i) {
buf.append(Integer.toHexString((i >> 24) & 0xff));
buf.append(Integer.toHexString((i >> 16) & 0xff));
buf.append(Integer.toHexString((i >> 8) & 0xff));
buf.append(Integer.toHexString(i & 0xff));
}
public static String camelize(String s) {
if (s == null) {
return null;
}
s = s.toLowerCase();
String[] array = LdiStringUtil.split(s, "_");
if (array.length == 1) {
return LdiStringUtil.capitalize(s);
}
StringBuffer buf = new StringBuffer(40);
for (int i = 0; i < array.length; ++i) {
buf.append(LdiStringUtil.capitalize(array[i]));
}
return buf.toString();
}
/**
* キャメル記法を_記法に変換します。
*
* @param s
* テキスト
* @return 結果の文字列
*/
public static String decamelize(final String s) {
if (s == null) {
return null;
}
if (s.length() == 1) {
return s.toUpperCase();
}
StringBuffer buf = new StringBuffer(40);
int pos = 0;
for (int i = 1; i < s.length(); ++i) {
if (Character.isUpperCase(s.charAt(i))) {
if (buf.length() != 0) {
buf.append('_');
}
buf.append(s.substring(pos, i).toUpperCase());
pos = i;
}
}
if (buf.length() != 0) {
buf.append('_');
}
buf.append(s.substring(pos, s.length()).toUpperCase());
return buf.toString();
}
public static boolean isNumber(final String s) {
if (s == null || s.length() == 0) {
return false;
}
int size = s.length();
for (int i = 0; i < size; i++) {
char chr = s.charAt(i);
if (chr < '0' || '9' < chr) {
return false;
}
}
return true;
}
}