21xrx.com
2024-12-23 03:00:32 Monday
登录
文章检索 我的文章 写文章
Java开源工具类:实现下划线转驼峰
2023-06-12 05:44:44 深夜i     --     --
Java工具类 下划线转驼峰 正则表达式

Java开发中,我们经常会遇到需要将下划线形式的字符串转换成驼峰式的字符串的需求。这个需求看似简单,但其实要考虑多种情况,如单词首字母大写、不同长度、连续下划线等等。为了方便开发,许多开源工具类已经实现了字符串的转换,本文介绍一款Java下划线转驼峰的开源工具类。

这个工具类的实现原理是利用正则表达式匹配下划线分隔符,在Java中将分隔符后的字符转换成大写,并删除下划线。具体实现详见下方代码:


public static String underlineToCamel(String line){

  if(line==null||"".equals(line))

    return "";

  

  StringBuilder sb=new StringBuilder();

  Pattern pattern=Pattern.compile("([A-Za-z\\d]+)(_)?");

  Matcher matcher=pattern.matcher(line);

  while(matcher.find()){

    String word=matcher.group();

    sb.append(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();

}

除了下划线转驼峰外,还提供了驼峰转下划线的方法,代码如下:


public static String camelToUnderline(String line){

  if(line==null||"".equals(line))

    return "";

  

  line=String.valueOf(line.charAt(0)).toUpperCase().concat(line.substring(1));

  StringBuilder sb=new StringBuilder();

  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();

}

以上两个方法已经分别实现了字符串的转换,但操作频繁时,每次都需要复制到项目中。因此,网上存在很多Java下划线转驼峰的开源工具类,例如Apache Common Lang库、Alibaba FastJson库、MyBatis的TypeHandlers等等。

Alibaba FastJson库中的实现方式类似于上方的方法,但多了缓存机制,以提高重复转换字符串的效率。MyBatis的TypeHandlers是将转换后的结果直接存储在数据库中,下次查询时直接使用,避免重复转换。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复