package de.flower.common.util;
import com.google.common.base.Splitter;
import org.apache.commons.lang3.StringUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author flowerrrr
*/
public final class Strings {
private Strings() {
}
/**
* Converts ACamelCaseString to a-camel-case-string.
* @param s
* @return
*/
public static String camelCaseToHyphen(final String s) {
return StringUtils.join(splitCamelCase(s), "-");
}
public static String[] splitCamelCase(final String s) {
String out = s.replaceAll(
String.format("%s|%s|%s",
"(?<=[A-Z])(?=[A-Z][a-z])",
"(?<=[^A-Z])(?=[A-Z])",
"(?<=[A-Za-z])(?=[^A-Za-z])"
),
" "
);
return StringUtils.split(out, " ");
}
/**
* Converts ACamelCaseXMLString to aCamelCaseXmlString
* @param s
* @return
*/
public static String uncapitalize(final String s) {
String[] split = splitCamelCase(s);
// lowercase all strings and re-capitalize first char of 2..n parts
for (int i = 0; i < split.length; i++) {
String tmp = split[i];
tmp = tmp.toLowerCase();
if (i > 0) {
tmp = StringUtils.capitalize(tmp);
}
split[i] = tmp;
}
return StringUtils.join(split);
}
public static String insertSoftHyphens(final String s, int nChars) {
if (StringUtils.isBlank(s)) {
return s;
} else {
Iterable<String> split = Splitter.fixedLength(nChars).split(s);
return StringUtils.join(split, "");
}
}
public static String substring(final String text, final String regexp) {
Pattern p = Pattern.compile("(" + regexp + ")");
Matcher m = p.matcher(text);
if (m.find()) {
return m.group(0);
} else {
return null;
}
}
}