!479 fix: 驼峰转下划线规则不一致问题

* fix: 修复测试代码
* fix: https://gitee.com/mybatis-flex/mybatis-flex/issues/IAEX9U
* Revert "fix: https://gitee.com/mybatis-flex/mybatis-flex/issues/IAEX9U"
* fix: https://gitee.com/mybatis-flex/mybatis-flex/issues/IAEX9U
This commit is contained in:
zuojinlong 2024-07-23 09:34:51 +00:00 committed by Michael Yang
parent 9f6c3453e2
commit eb0a485f0d
2 changed files with 31 additions and 13 deletions

View File

@ -1,5 +1,6 @@
package com.mybatisflex.core.util; package com.mybatisflex.core.util;
import com.mybatisflex.processor.util.StrUtil;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
@ -9,25 +10,39 @@ public class StringUtilTest {
@Test @Test
public void testCamelToUnderline() { public void testCamelToUnderline() {
String s1 = StringUtil.camelToUnderline("AAA"); String s1 = StringUtil.camelToUnderline("AAA");
String s1_ = StrUtil.camelToUnderline("AAA");
Assert.assertEquals(s1, "aaa"); Assert.assertEquals(s1, "aaa");
Assert.assertEquals(s1_, "aaa");
String s2 = StringUtil.camelToUnderline("StudentIDRoom"); String s2 = StringUtil.camelToUnderline("StudentIDRoom");
String s2_ = StrUtil.camelToUnderline("StudentIDRoom");
Assert.assertEquals(s2, "student_idroom"); Assert.assertEquals(s2, "student_idroom");
Assert.assertEquals(s2_, "student_idroom");
String s3 = StringUtil.camelToUnderline("StudentIdRoom"); String s3 = StringUtil.camelToUnderline("StudentIdRoom");
String s3_ = StrUtil.camelToUnderline("StudentIdRoom");
Assert.assertEquals(s3, "student_id_room"); Assert.assertEquals(s3, "student_id_room");
Assert.assertEquals(s3_, "student_id_room");
String s4 = StringUtil.camelToUnderline("Student_ID"); String s4 = StringUtil.camelToUnderline("Student_ID");
String s4_ = StrUtil.camelToUnderline("Student_ID");
Assert.assertEquals(s4, "student_id"); Assert.assertEquals(s4, "student_id");
Assert.assertEquals(s4_, "student_id");
String s44 = StringUtil.camelToUnderline("StudentID"); String s5 = StringUtil.camelToUnderline("StudentID");
Assert.assertEquals(s44,"student_id"); String s5_ = StrUtil.camelToUnderline("StudentID");
String s5 = StringUtil.camelToUnderline("Student_Id");
Assert.assertEquals(s5, "student_id"); Assert.assertEquals(s5, "student_id");
Assert.assertEquals(s5_, "student_id");
String s6 = StringUtil.camelToUnderline("student_id"); String s6 = StringUtil.camelToUnderline("Student_Id");
String s6_ = StrUtil.camelToUnderline("Student_Id");
Assert.assertEquals(s6, "student_id"); Assert.assertEquals(s6, "student_id");
Assert.assertEquals(s6_, "student_id");
String s7 = StringUtil.camelToUnderline("student_id");
String s7_ = StrUtil.camelToUnderline("student_id");
Assert.assertEquals(s7, "student_id");
Assert.assertEquals(s7_, "student_id");
} }
} }

View File

@ -55,8 +55,11 @@ public class StrUtil {
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
char c = str.charAt(i); char c = str.charAt(i);
if (Character.isUpperCase(c) && i > 0) { if (Character.isUpperCase(c) && i > 0) {
char prev = str.charAt(i - 1);
if (!Character.isUpperCase(prev) && prev != '_') {
sb.append('_'); sb.append('_');
} }
}
sb.append(Character.toLowerCase(c)); sb.append(Character.toLowerCase(c));
} }
return sb.toString(); return sb.toString();