package whitebox.utilities;
import java.text.DecimalFormatSymbols;
/**
*
* @author johnlindsay
*/
public abstract class StringUtilities {
public static boolean isNumeric(String str) {
return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal.
}
public static boolean isInteger(String str) {
return str.matches("([0-9]*)\\.[0]");
}
public static boolean isBoolean(String str) {
return str.toLowerCase().trim().equals("true")
|| str.toLowerCase().trim().equals("false");
}
public static boolean isStringNumeric(String str) {
try {
if (str.isEmpty()) {
return false;
}
DecimalFormatSymbols currentLocaleSymbols = DecimalFormatSymbols.getInstance();
char localeMinusSign = currentLocaleSymbols.getMinusSign();
if (!Character.isDigit(str.charAt(0)) && str.charAt(0) != localeMinusSign) {
return false;
}
boolean isDecimalSeparatorFound = false;
char localeDecimalSeparator = currentLocaleSymbols.getDecimalSeparator();
for (char c : str.substring(1).toCharArray()) {
if (!Character.isDigit(c)) {
if (c == localeDecimalSeparator && !isDecimalSeparatorFound) {
isDecimalSeparatorFound = true;
continue;
}
return false;
}
}
return true;
} catch (Exception e) {
return false;
}
}
public static String replaceLast(String string, String toReplace, String replacement) {
int pos = string.lastIndexOf(toReplace);
if (pos > -1) {
return string.substring(0, pos)
+ replacement
+ string.substring(pos + toReplace.length(), string.length());
} else {
return string;
}
}
public static String toTitleCase(String input) {
StringBuilder ret = new StringBuilder();
boolean nextTitleCase = true;
for (char c : input.toCharArray()) {
if (Character.isSpaceChar(c)) {
nextTitleCase = true;
} else if (nextTitleCase) {
c = Character.toTitleCase(c);
nextTitleCase = false;
} else {
c = Character.toLowerCase(c);
nextTitleCase = false;
}
ret.append(c);
}
return ret.toString();
}
}