Java实现驼峰和下划线互相转换的示例代码
作者:烟火缠过客 发布时间:2023-12-16 15:23:48
标签:Java,驼峰,下划线
前言
基本语法
首先我们要知道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));
}
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


猜你喜欢
- 一段看似平平无奇的代码Classroom classroom = this.getOne( Wrappers.<Class
- 前言在Spring Boot中有一个注释@Async,可以帮助开发人员开发并发应用程序。但使用此功能非常棘手。在本博客中,我们将了解如何将此
- Java 虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,如图所示:程序计数器程序计数
- 什么是指纹解锁技术根据人的指纹来验证是否能够解锁的技术,类似于通过输入密码来解锁,都是通过一定的数字特征来解锁。指纹解锁技术原理理解首先说明
- ssm mybatis配置多个mapper目录通配符配置比如目录的结构如下:com/test/web/user/mappercom/test
- 一:form在前台以post方式提交数据: 浏览器将数据(假设为“中国”)发送给服务器的时
- 程序在运行时如果出错,编译器会抛出异常,异常如果没有被捕捉处理,程序会终止运行。异常分为未检查异常和已检查异常,以下对这两类异常做进一步说明
- 前言在上一章节Spring和Mybatis整合的原理详解中有写到Spring和MyBatis整合时用到的Bean扫描是Spring本身提供的
- PS:在开发中我们会遇到一些图片处理问题,比如说缓存图片了、限制图片大小了、查看图片了等。上一篇文章介绍了图片的全景效果查看,今天介绍一个图
- Spring Security提供如下几种认证机制Username & PasswordOAuth2.0 LoginSAML 2.0
- 创建一个类,在该类的主方法中创建标准输入流的扫描器对象,提示用户输入一个整数,并通过扫描器的方法来接受这个整数,然后通过三元运算符判断该数字
- 打包发布jar包部署相对较为简单,尤其是在分布式服务比较多的情况下。单体项目如果是单体项目,只需要找到maven的插件,点击package运
- 一:问题描述 在已经root过的android设备下,app执行一个linux命令,app需要获取su权限,在某些a
- 题目描述这是 LeetCode 上的 768. 最多能完成排序的块 II ,难度为 困难。Tag : 「贪心」这个问题和&ldquo
- 上一篇《Android 自定义View(一) Paint、Rect、Canvas介绍》讲了最基础的如何自定义一个View,以及View用到的
- 一、Flow的基本概念Kotlin 的 Flow 相信大家都或多或少使用过,毕竟目前比较火,目前我把Flow的使用整理了一下。希望和大家所学
- 一:自定义异常类:package 自定义异常; //或者继承RuntimeException(运行时异常) public class MyE
- 八皇后问题(N皇后问题)的回溯法求解一、问题描述在一个国际象棋棋盘上放置八个皇后,使得任何两个皇后之间不相互攻击,求出所有的布棋方法,并推广
- 简介线段树是一种二叉搜索树,是用来维护区间信息的数据结构。可以在O(logN)的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区
- 将脚本挂在要判断声音是否播放完毕的物体上using System.Collections;using UnityEngine;using U