Java--变量名驼峰式和下划线互转

举报
吾日三省贾斯汀 发表于 2021/09/09 22:38:55 2021/09/09
【摘要】 最近写代码的时候,涉及到解析报文这一块的知识,解析报文中的数据得到Java数据时,得到的变量名竟然是是下划线的,正常我们Java当中用的是驼峰式命名规则,因此需要驼峰式、下划线变量名之间进行转换。代码主要包含以下几种转换: 下划线转驼峰式(String) 驼峰式转下划线(String) 下划线转驼峰式(Map) 驼峰式转下划线(Map...

最近写代码的时候,涉及到解析报文这一块的知识,解析报文中的数据得到Java数据时,得到的变量名竟然是是下划线的,正常我们Java当中用的是驼峰式命名规则,因此需要驼峰式、下划线变量名之间进行转换。代码主要包含以下几种转换:

下划线转驼峰式(String)
驼峰式转下划线(String)
下划线转驼峰式(Map)
驼峰式转下划线(Map)

实现代码


  
  1. import java.util.HashMap;
  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.Map.Entry;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7. /**
  8. * Java String、Map String key的驼峰式和下划线互转
  9. * @author JustinQin
  10. *
  11. */
  12. public class CamelToUnderlineConvertUtil {
  13. /**
  14. * 下划线转驼峰式(String)
  15. * @param lineString
  16. * @param smallCamel true-返回小驼峰,false-大驼峰式
  17. * @return
  18. */
  19. public static String underlineToCamel(String lineString,boolean smallCamel){
  20. if(null == lineString || "".equals(lineString)) return lineString;
  21. StringBuffer sb = new StringBuffer();
  22. Pattern pattern = Pattern.compile("([A-Za-z\\d]+)(_)?"); //字母、数字、下划线
  23. Matcher matcher = pattern.matcher(lineString);
  24. while (matcher.find()) {
  25. String word = matcher.group();
  26. sb.append(smallCamel && matcher.start() == 0 ?
  27. Character.toLowerCase(word.charAt(0)) : Character.toUpperCase(word.charAt(0)));
  28. int index = word.lastIndexOf("_");
  29. if(index > 0){
  30. sb.append(word.substring(1, index).toLowerCase());
  31. }else{
  32. sb.append(word.substring(1).toLowerCase());
  33. }
  34. }
  35. return sb.toString();
  36. }
  37. /**
  38. * 驼峰式转下划线(String)
  39. * @param camelString
  40. * @return
  41. */
  42. public static String camelToUnderline(String camelString){
  43. if(null == camelString || "".equals(camelString)) return camelString;
  44. camelString = String.valueOf(camelString.charAt(0)).toUpperCase().concat(camelString.substring(1));
  45. StringBuffer sb = new StringBuffer();
  46. Pattern pattern = Pattern.compile("[A-Z]([a-z\\d]+)?"); //字母、数字、下划线
  47. Matcher matcher = pattern.matcher(camelString);
  48. while (matcher.find()) {
  49. String word = matcher.group();
  50. sb.append(word.toLowerCase());
  51. sb.append(matcher.end() == camelString.length() ? "" : "_");
  52. }
  53. return sb.toString();
  54. }
  55. /**
  56. * 下划线转驼峰式(Map)
  57. * @param map
  58. * @return newMap
  59. */
  60. public static Map<String,Object> underlineToCamel(Map<String,Object> map){
  61. Map<String,Object> newMap = new HashMap<String,Object>();
  62. Iterator<Entry<String, Object>> iterator = map.entrySet().iterator();
  63. Entry<String, Object> entry;
  64. while(iterator.hasNext()){
  65. entry = iterator.next();
  66. if(null != entry.getKey() && entry.getKey() instanceof String){
  67. newMap.put(underlineToCamel(entry.getKey(), true), entry.getValue());
  68. }
  69. iterator.remove();
  70. }
  71. return newMap;
  72. }
  73. /**
  74. * 驼峰式转下划线(Map)
  75. * @param map
  76. * @return newMap
  77. */
  78. public static Map<String,Object> camelToUnderline(Map<String,Object> map){
  79. Map<String,Object> newMap = new HashMap<String,Object>();
  80. Iterator<Entry<String, Object>> iterator = map.entrySet().iterator();
  81. Entry<String, Object> entry;
  82. while(iterator.hasNext()){
  83. entry = iterator.next();
  84. if(null != entry.getKey() && entry.getKey() instanceof String){
  85. newMap.put(camelToUnderline(entry.getKey()), entry.getValue());
  86. }
  87. iterator.remove();
  88. }
  89. return newMap;
  90. }
  91. public static void main(String[] args) {
  92. System.out.println(underlineToCamel("Justin_qin_jj", false));
  93. System.out.println(camelToUnderline("JustinQinJj"));
  94. Map<String,Object> map = new HashMap<String,Object>();
  95. map.put("yourName", "Justin");
  96. map.put("yourSex", "男");
  97. map.put("youreAge", 22);
  98. Map<String, Object> camelToUnderlineMap = camelToUnderline(map);
  99. System.out.println(camelToUnderlineMap.toString());
  100. Map<String, Object> underlineToCamelMap = underlineToCamel(camelToUnderlineMap);
  101. System.out.println(underlineToCamelMap.toString());
  102. }
  103. }

 

文章来源: blog.csdn.net,作者:吾日三省贾斯汀,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/JustinQin/article/details/102542086

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。