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

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) public static String toUnderScoreCase(String str) {
{ if (str == null) {
if (s == null)
{
return null; return null;
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
boolean upperCase = false; //前置字符是否大写
for (int i = 0; i < s.length(); i++) boolean preCharIsUpperCase = true;
{ //当前字符是否大写
char c = s.charAt(i); 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;
}
boolean nextUpperCase = true; curreCharIsUpperCase = Character.isUpperCase(c);
if (i < (s.length() - 1)) if (i < (str.length() - 1)) {
{ nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
} }
if ((i > 0) && Character.isUpperCase(c)) if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) {
{ sb.append(SEPARATOR);
if (!upperCase || !nextUpperCase) } else if ((i !=0 && !preCharIsUpperCase) && curreCharIsUpperCase) {
{ sb.append(SEPARATOR);
sb.append(SEPARATOR);
}
upperCase = true;
} }
else
{
upperCase = false;
}
sb.append(Character.toLowerCase(c)); sb.append(Character.toLowerCase(c));
} }

Loading…
Cancel
Save