Java实现驼峰和下划线互相转换的示例代码

作者:烟火缠过客 时间:2023-12-16 15:23:48 

前言

基本语法

首先我们要知道java的基础语法。

1.由26个英文字母大小写,0-9,_或$组成

2.数字不可以开头

3.不可以使用关键字和保留字,但是能包括关键字和保留字

4.Java中严格区分大小写,长度无限制

5.标识符不能包括空格

6.取名尽量做到“见名知意”

驼峰命名法

骆驼式命名法(Camel-Case)又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例)。

正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。

程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。

例如,下面是分别用骆驼式命名法和下划线法命名的同一个函数:

printEmployeePaychecks();

print_employee_paychecks();

第一个函数名使用了驼峰命名法——函数名中的每一个逻辑断点都有一个大写字母来标记;

第二个函数名使用了下划线法----函数名中的每一个逻辑断点都有一个下划线来标记。

1.驼峰与下划线互转

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* 驼峰法-下划线互转
* @author cshaper
* @since 2015.07.04
* @version 1.0.0
*/
public class UnderlineToCamelUtils {

/**
 * 下划线转驼峰法
 * @param line 源字符串
 * @param smallCamel 大小驼峰,是否为小驼峰
 * @return 转换后的字符串
 */
public static String underlineToCamel(String line,boolean smallCamel){
 if(line==null||"".equals(line)){
  return "";
 }
 StringBuffer sb=new StringBuffer();
 Pattern pattern=Pattern.compile("([A-Za-z\\d]+)(_)?");
 Matcher matcher=pattern.matcher(line);
 while(matcher.find()){
  String word=matcher.group();
  sb.append(smallCamel&&matcher.start()==0?Character.toLowerCase(word.charAt(0)):Character.toUpperCase(word.charAt(0)));
  int index=word.lastIndexOf('_');
  if(index>0){
   sb.append(word.substring(1, index).toLowerCase());
  }else{
   sb.append(word.substring(1).toLowerCase());
  }
 }
 return sb.toString();
}
/**
 * 驼峰法转下划线
 * @param line 源字符串
 * @return 转换后的字符串
 */
public static String camelToUnderline(String line){
 if(line==null||"".equals(line)){
  return "";
 }
 line=String.valueOf(line.charAt(0)).toUpperCase().concat(line.substring(1));
 StringBuffer sb=new StringBuffer();
 Pattern pattern=Pattern.compile("[A-Z]([a-z\\d]+)?");
 Matcher matcher=pattern.matcher(line);
 while(matcher.find()){
  String word=matcher.group();
  sb.append(word.toUpperCase());
  sb.append(matcher.end()==line.length()?"":"_");
 }
 return sb.toString();
}
}

2.测试

public static void main(String[] args) {
 String line="I_HAVE_AN_IPANG3_PIG";
 String camel=underlineToCamel(line,true);
 System.out.println(camel);
 System.out.println(camelToUnderline(camel));
}

Java实现驼峰和下划线互相转换的示例代码

3.方法补充

除了上面的方法,本文还为大家准备了更简短的方法,需要的可以参考一下

/***
   * <p>
   * 将驼峰转为下划线
   * </p >
   * @param str
   * @return java.lang.String
   * @author comapss
   * @date 2022/5/9 0:01
   * @since 1.0.0
  **/
   public static String humpToUnderline(String str) {
       Pattern compile = Pattern.compile("[A-Z]");
       Matcher matcher = compile.matcher(str);
       StringBuffer sb = new StringBuffer();
       while(matcher.find()) {
           matcher.appendReplacement(sb,  "_" + matcher.group(0).toLowerCase());
       }
       matcher.appendTail(sb);
       return sb.toString();
   }

/***
 * <p>
 * 将下划线转为驼峰
 * </p >
 * @param str
 * @return java.lang.String
 * @author comapss
 * @date 2022/5/9 0:01
 * @since 1.0.0
**/
   public static String underlineToHump(String str) {
       str = str.toLowerCase();
       Pattern compile = Pattern.compile("_[a-z]");
       Matcher matcher = compile.matcher(str);
       StringBuffer sb = new StringBuffer();
       while(matcher.find()) {
           matcher.appendReplacement(sb,  matcher.group(0).toUpperCase().replace("_",""));
       }
       matcher.appendTail(sb);
       return sb.toString();
   }

来源:https://blog.csdn.net/LuckFairyLuckBaby/article/details/89534109

标签:Java,驼峰,下划线
0
投稿

猜你喜欢

  • Unity实现虚拟键盘

    2022-05-24 11:25:38
  • Java实战宠物医院预约挂号系统的实现流程

    2022-12-28 03:07:52
  • springmvc中下载中文文件名称为下划线的解决方案

    2023-11-25 22:28:53
  • 使用SpringBoot自定义starter的完整步骤

    2023-09-26 02:41:48
  • SpringBoot全局异常与数据校验的方法

    2023-12-11 10:46:06
  • 使用C#编写简单的图形化的可发送附件的邮件客户端程序

    2023-04-24 22:42:04
  • Java实现的质因数分解操作示例【基于递归算法】

    2023-08-19 03:22:12
  • Java发送报文与接收报文的实例代码

    2023-07-09 04:44:01
  • Android 异步获取网络图片并处理导致内存溢出问题解决方法

    2022-10-11 07:58:14
  • Android图片处理:识别图像方向并显示实例教程

    2023-02-11 08:01:07
  • Java实现单例模式的五种方法介绍

    2022-10-20 17:32:56
  • SpringBoot整合Mybatis,解决TypeAliases配置失败的问题

    2023-11-28 14:59:24
  • C# 显示、隐藏窗口对应的任务栏

    2023-06-13 03:57:32
  • Python实现JavaBeans流程详解

    2021-05-29 05:37:39
  • 浅扒Android动态设置字体大小的示例

    2023-06-08 20:01:15
  • Android中ListView的几种常见的优化方法总结

    2021-06-09 08:36:21
  • MyBatis Generator去掉生成的注解

    2022-08-29 22:01:03
  • android 类似微信的摇一摇功能实现思路及代码

    2022-09-16 03:45:36
  • .net实现序列化与反序列化实例解析

    2022-08-05 06:42:08
  • MyBatis SpringMVC整合实现步骤详解

    2023-02-02 20:33:07
  • asp之家 软件编程 m.aspxhome.com