侧边栏壁纸
博主头像
憨憨大头个人博客博主等级

心存希冀,目有繁星

  • 累计撰写 110 篇文章
  • 累计创建 13 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Java中驼峰与下划线相互转换

Administrator
2024-09-02 / 0 评论 / 0 点赞 / 23 阅读 / 7033 字

1、驼峰命名法

/**
* 驼峰式命名法
*/
public static String toCamelCase(String s) {
   if (s == null) {
       return null;
   }
   s = s.toLowerCase();
   StringBuilder sb = new StringBuilder(s.length());
   boolean upperCase = false;
   for (int i = 0; i < s.length(); i++) {
       char c = s.charAt(i);

       if (c == "_") {
           upperCase = true;
       } else if (upperCase) {
           sb.append(Character.toUpperCase(c));
           upperCase = false;
       } else {
           sb.append(c);
       }
   }
   return sb.toString();
}


作用:user_name --> userName

2、将下划线大写方式命名的字符串转换为驼峰式

/**
* 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串
*
* @param name 转换前的下划线大写方式命名的字符串
* @return 转换后的驼峰式命名的字符串
*/
public static String convertToCamelCase(String name) {
   StringBuilder result = new StringBuilder();
   // 快速检查
   if (name == null || name.isEmpty()) {
       // 没必要转换
       return "";
   } else if (!name.contains("_")) {
       // 不含下划线,仅将首字母大写
       return name.substring(0, 1).toUpperCase() + name.substring(1);
   }
   // 用下划线将原始字符串分割
   String[] camels = name.split("_");
   for (String camel : camels) {
       // 跳过原始字符串中开头、结尾的下换线或双重下划线
       if (camel.isEmpty()) {
           continue;
       }
       // 首字母大写
       result.append(camel.substring(0, 1).toUpperCase());
       result.append(camel.substring(1).toLowerCase());
   }
   return result.toString();
}

作用:HELLO_WORLD --> HelloWorld

3、驼峰转下划线

/**
* 下划线转驼峰命名
*/
public static String toUnderScoreCase(String str) {
   if (str == null) {
       return null;
   }
   StringBuilder sb = new StringBuilder();
   // 前置字符是否大写
   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 < (str.length() - 1)) {
           nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
       }

       if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) {
           sb.append("_");
       } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) {
           sb.append("_");
       }
       sb.append(Character.toLowerCase(c));
   }

   return sb.toString();
}

作用: HelloWorld --> hello_world

0

评论区