修复驼峰转下划线拼接时,简称缩写作为前缀时,转换后首字母后追加了下划线

master
xjt283525476 6 years ago committed by Limy
parent 09b6fc9415
commit 59c529c652

@ -259,38 +259,36 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 线
*/
public static String toUnderScoreCase(String s)
{
if (s == null)
{
public static String toUnderScoreCase(String str) {
if (str == null) {
return null;
}
StringBuilder sb = new StringBuilder();
boolean upperCase = false;
for (int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
boolean nextUpperCase = true;
if (i < (s.length() - 1))
{
nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
//前置字符是否大写
boolean preCharIsUpperCase = true;
//当前字符是否大写
boolean curreCharIsUpperCase = true;
//下一字符是否大写
boolean nexteCharIsUpperCase = true;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (i > 0) {
preCharIsUpperCase = Character.isUpperCase(str.charAt(i-1));;
} else {
preCharIsUpperCase = false;
}
curreCharIsUpperCase = Character.isUpperCase(c);
if ((i > 0) && Character.isUpperCase(c))
{
if (!upperCase || !nextUpperCase)
{
sb.append(SEPARATOR);
}
upperCase = true;
if (i < (str.length() - 1)) {
nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
}
else
{
upperCase = false;
if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) {
sb.append(SEPARATOR);
} else if ((i !=0 && !preCharIsUpperCase) && curreCharIsUpperCase) {
sb.append(SEPARATOR);
}
sb.append(Character.toLowerCase(c));
}

Loading…
Cancel
Save