/*
* This file is part of the OdinMS Maple Story Server Copyright (C) 2008 ~ 2010
* Patrick Huy <patrick.huy@frz.cc> Matthias Butz <matze@odinms.de> Jan
* Christian Meyer <vimes@odinms.de>
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by
* the Free Software Foundation. You may not use, modify or distribute this
* program under any other version of the GNU Affero General Public License.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package javastory.tools;
/**
* Provides a suite of utilities for manipulating strings.
*
* @author Frz
* @since Revision 336
* @version 1.0
*
*/
public class StringUtil {
/**
* Gets a string padded from the left to <code>length</code> by
* <code>padchar</code>.
*
* @param in
* The input string to be padded.
* @param padchar
* The character to pad with.
* @param length
* The length to pad to.
* @return The padded string.
*/
public static final String getLeftPaddedStr(final String in, final char padchar, final int length) {
final StringBuilder builder = new StringBuilder(length);
for (int x = in.length(); x < length; x++) {
builder.append(padchar);
}
builder.append(in);
return builder.toString();
}
/**
* Gets a string padded from the right to <code>length</code> by
* <code>padchar</code>.
*
* @param in
* The input string to be padded.
* @param padchar
* The character to pad with.
* @param length
* The length to pad to.
* @return The padded string.
*/
public static final String getRightPaddedStr(final String in, final char padchar, final int length) {
final StringBuilder builder = new StringBuilder(in);
for (int x = in.length(); x < length; x++) {
builder.append(padchar);
}
return builder.toString();
}
/**
* Joins an array of strings starting from string <code>start</code> with a
* space.
*
* @param arr
* The array of strings to join.
* @param start
* Starting from which string.
* @return The joined strings.
*/
public static final String joinStringFrom(final String arr[], final int start) {
return joinStringFrom(arr, start, " ");
}
/**
* Joins an array of strings starting from string <code>start</code> with
* <code>sep</code> as a seperator.
*
* @param arr
* The array of strings to join.
* @param start
* Starting from which string.
* @return The joined strings.
*/
public static final String joinStringFrom(final String arr[], final int start, final String sep) {
final StringBuilder builder = new StringBuilder();
for (int i = start; i < arr.length; i++) {
builder.append(arr[i]);
if (i != arr.length - 1) {
builder.append(sep);
}
}
return builder.toString();
}
/**
* Makes an enum name human readable (fixes spaces, capitalization, etc)
*
* @param enumName
* The name of the enum to neaten up.
* @return The human-readable enum name.
*/
public static final String makeEnumHumanReadable(final String enumName) {
final StringBuilder builder = new StringBuilder(enumName.length() + 1);
for (final String word : enumName.split("_")) {
if (word.length() <= 2) {
builder.append(word); // assume that it's an abbrevation
} else {
builder.append(word.charAt(0));
builder.append(word.substring(1).toLowerCase());
}
builder.append(' ');
}
return builder.substring(0, enumName.length());
}
/**
* Counts the number of <code>chr</code>'s in <code>str</code>.
*
* @param str
* The string to check for instances of <code>chr</code>.
* @param chr
* The character to check for.
* @return The number of times <code>chr</code> occurs in <code>str</code>.
*/
public static final int countCharacters(final String str, final char chr) {
int ret = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == chr) {
ret++;
}
}
return ret;
}
}