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

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 nextUpperCase = true; boolean nexteCharIsUpperCase = true;
for (int i = 0; i < str.length(); i++) {
if (i < (s.length() - 1)) char c = str.charAt(i);
{ if (i > 0) {
nextUpperCase = Character.isUpperCase(s.charAt(i + 1)); preCharIsUpperCase = Character.isUpperCase(str.charAt(i-1));;
} else {
preCharIsUpperCase = false;
} }
curreCharIsUpperCase = Character.isUpperCase(c);
if ((i > 0) && Character.isUpperCase(c)) if (i < (str.length() - 1)) {
{ nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
if (!upperCase || !nextUpperCase)
{
sb.append(SEPARATOR);
}
upperCase = true;
} }
else
{ if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) {
upperCase = false; sb.append(SEPARATOR);
} else if ((i !=0 && !preCharIsUpperCase) && curreCharIsUpperCase) {
sb.append(SEPARATOR);
} }
sb.append(Character.toLowerCase(c)); sb.append(Character.toLowerCase(c));
} }

Loading…
Cancel
Save