java:蛇形命名法格式(snake-case)字符串变量名转驼峰命名法格式(camel-case)
Posted 10km
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java:蛇形命名法格式(snake-case)字符串变量名转驼峰命名法格式(camel-case)相关的知识,希望对你有一定的参考价值。
在变量命名的习惯方法有多种,不同的语言变量都有约定俗成的命名方式,比如常见就是蛇峰命名法(camel-case)和蛇形命名法(snake-case),比如Java中的命名习惯就是用camel-case,而SQL语言和C语言这些历史更久的设计语言命名习惯是snake-case.
在开发工作,比如涉及反射,数据库字段名转换为Java字段名,我们有时需要将这两种不同命名格式的变量名进行相互转换,做这个转换自己也不复杂,因为经常要用到而且要可靠,所以在网上找了找,找到如下这篇文章,比较全面的介绍了camel-case和snake-case之间转换的各种实现方案
看了文章才知道,其实一些著名的第三方库都提供了命名格式的转换工具,比如 Apache 的Commons Text和google的guava,
所以我就挑了我熟悉的guava,基于它进一步封装了自己的命名格式转换类:CaseSupport。
实现如下:
import static com.google.common.base.Strings.nullToEmpty;
import com.google.common.base.CaseFormat;
public class CaseSupport
/**
* @param name
* @return 将变量名转为蛇形命名法格式的字符串
*/
public static String toSnakecase(String name)
return null == name ? name : CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE,name);
/**
* @param name
* @return 将变量名转为驼峰命名法格式的字符串
*/
public static String toCamelcase(String name)
return null == name ? name : CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name);
/**
* 判断 变量是否为驼峰命名法格式的字符串
* @param name
*/
public static boolean isCamelcase(String input)
if(!nullToEmpty(input).trim().isEmpty())
return !input.equals(input.toLowerCase())
&& !input.equals(input.toUpperCase()) && input.indexOf('_')<0;
return false;
/**
* 判断 变量是否为驼峰命名法格式的字符串
* @param input
*/
public static boolean isSnakelcase(String input)
if(!nullToEmpty(input).trim().isEmpty())
return input.indexOf('_')>=0;
return false ;
调用示例如下:
import static org.junit.Assert.*;
import org.junit.Test;
import static net.gdface.utils.SimpleLog.log;
import static com.google.common.base.Strings.nullToEmpty;
import static net.gdface.utils.CaseSupport.*;
public class CaseSupportTest
@Test
public void testCase()
log(toCamelcase("otherProps"));
log(toSnakecase("OtherPropsP"));
log(toSnakecase("A1A2"));
log(toSnakecase("Other Props"));
log(toSnakecase("otherProps"));
log(toCamelcase("OTHERPROPS"));
log(toCamelcase("uer_1"));
log(toCamelcase("_uer_sam_"));
log(toCamelcase("_uer_Sam_1"));
log(toCamelcase("_uer"));
log(toCamelcase("_uer_S"));
log(toCamelcase("PerSS"));
assertTrue(CaseSupport.isCamelcase("otherProps"));
assertFalse(CaseSupport.isCamelcase(" "));
assertTrue(CaseSupport.isCamelcase(" otherProps "));
assertTrue(CaseSupport.isCamelcase(" PtherPropsP "));
assertFalse(CaseSupport.isSnakelcase(" PtherPropsP "));
assertFalse(CaseSupport.isSnakelcase("OTHERPROPS"));
assertTrue(CaseSupport.isSnakelcase("_uer_sam_"));
assertTrue(CaseSupport.isSnakelcase("_uer"));
以上是关于java:蛇形命名法格式(snake-case)字符串变量名转驼峰命名法格式(camel-case)的主要内容,如果未能解决你的问题,请参考以下文章