驼峰风格、下划线风格互转

 1 /**
 2  * 将驼峰式命名的字符串转换为下划线大写方式。如果转换前的驼峰式命名的字符串为空,则返回空字符串。</br>
 3  * 例如:HelloWorld->HELLO_WORLD
 4  * @param name 转换前的驼峰式命名的字符串
 5  * @return 转换后下划线大写方式命名的字符串
 6  */
 7 public static String underscoreName(String name) {
 8     StringBuilder result = new StringBuilder();
 9     if (name != null && name.length() > 0) {
10         // 将第一个字符处理成大写
11         result.append(name.substring(0, 1).toUpperCase());
12         // 循环处理其余字符
13         for (int i = 1; i < name.length(); i++) {
14             String s = name.substring(i, i + 1);
15             // 在大写字母前添加下划线
16             if (s.equals(s.toUpperCase()) && !Character.isDigit(s.charAt(0))) {
17                 result.append("_");
18             }
19             // 其他字符直接转成大写
20             result.append(s.toUpperCase());
21         }
22     }
23     return result.toString();
24 }
25
26 /**
27  * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
28  * 例如:HELLO_WORLD->HelloWorld
29  * @param name 转换前的下划线大写方式命名的字符串
30  * @return 转换后的驼峰式命名的字符串
31  */
32 public static String camelName(String name) {
33     StringBuilder result = new StringBuilder();
34     // 快速检查
35     if (name == null || name.isEmpty()) {
36         // 没必要转换
37         return "";
38     } else if (!name.contains("_")) {
39         // 不含下划线,仅将首字母小写
40         return name.substring(0, 1).toLowerCase() + name.substring(1);
41     }
42     // 用下划线将原始字符串分割
43     String camels[] = name.split("_");
44     for (String camel :  camels) {
45         // 跳过原始字符串中开头、结尾的下换线或双重下划线
46         if (camel.isEmpty()) {
47             continue;
48         }
49         // 处理真正的驼峰片段
50         if (result.length() == 0) {
51             // 第一个驼峰片段,全部字母都小写
52             result.append(camel.toLowerCase());
53         } else {
54             // 其他的驼峰片段,首字母大写
55             result.append(camel.substring(0, 1).toUpperCase());
56             result.append(camel.substring(1).toLowerCase());
57         }
58     }
59     return result.toString();
60 }
时间: 2024-08-06 20:08:45

驼峰风格、下划线风格互转的相关文章

将驼峰和下划线数据互转

// 字符串的下划线格式转驼峰格式,eg:hello_world => helloWorld function underline2Hump(word) { return word.replace(/_(\w)/g, function (all, letter) { return letter.toUpperCase() }) } // 字符串的驼峰格式转下划线格式,eg:helloWorld => hello_world function hump2Underline(word) { ret

驼峰命名法和下划线风格的互转

偶然遇到这个问题,感觉有些意思,于是研究了一下. 下划线转驼峰比较简单,直接根据下划线打散成数组,每个子项首字符转大写,再做字符串拼接即可. 驼峰转下划线风格,稍微复杂一些.刚开始我没有思路,后来想到,可以遍历字符串,遇到大写字母将其转换成小写,并在前面加一个下划线. 最终实现: class CamelTool{ //驼峰命名法转下划线风格 public static function toUnderScore($str){ $array = array(); for($i=0;$i<strle

camel-name-utils 在驼峰风格跟下划线风格之间切换

用处 用来将字符串在驼峰风格跟下划线风格之间切换.对于一般人可能没用,对于写orm框架的人有点作用. 例子: company_name -> companyName 安装方式 添加以下依赖到pom.xml <dependency> <groupId>org.crazycake</groupId> <artifactId>camel-name-utils</artifactId> <version>1.0.0-RELEASE<

【原创】字符串工具类--驼峰法与下划线法互转

在实际项目开发中,会碰到这样的问题,数据库表结构设计好了,可实体类还没相应地弄出来.实体类的属性命名方法一般是驼峰法,而数据库中的表字段命名方法用的是下划线法.如果表的字段非常多,我们根据设计好的数据库字段再手动敲写一遍驼峰法的属性,这有点费时了.如何迅速地把数据库中的表字段变成我们所需要的驼峰式的属性呢? 解决方法有二,一是通过文本编辑工具,如EditPlus,Notepad++等,利用它们携带的正则替换功能来迅速实现:二是通过自己编写工具类来实现.至于第一种方法操作技巧,不在这边赘述.第二种

驼峰命名和下划线命名互转php实现

驼峰命名和下划线命名经常需要互转,下面提供两种php的实现方式.第一种方法效率相对差一些,实现方式如下: //驼峰命名转下划线命名 function toUnderScore($str) { $dstr = preg_replace_callback('/([A-Z]+)/',function($matchs) { return '_'.strtolower($matchs[0]); },$str); return trim(preg_replace('/_{2,}/','_',$dstr),'

驼峰法和下划线命名法的互相转换

主要是接口入参太多,python和java的命名不同,做个转换 # coding:utf8 import re class StrTransverter(object): p = re.compile(r'([a-z]|\d)([A-Z])') p2 = re.compile(r'(_\w)') def __init__(self,raw_str): self.raw_str = raw_str def hump2underline(self): """ 驼峰法转换为下划线

Java-驼峰命名与下划线命名互转

package com.xsh.util; /** * String工具类 * * @author xieshuang * @date 2019-05-23 */ public class StringUtils { private final static String UNDERLINE = "_"; /*** * 下划线命名转为驼峰命名 * * @param para * 下划线命名的字符串 */ public static String underlineToHump(Stri

Spring Data JPA column 驼峰与下划线的转化

使用Spring data jpa 时,表字段(user_id)与实体(userId)不能对应,需要添加以下配置 参考:https://www.jianshu.com/p/fc2c79814956 峰与下划线的转化 通用配置: application.properties 配置 无修改命名 spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStan

jackson 常用注解,比如忽略某些属性,驼峰和下划线互转

一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换:这样,就需要用到注解: Jackson默认是针对get方法来生成JSON字符串的,可以使用注解来做一些特殊用途:常见的使用如下:1 排除属性@JsonIgnore,一般标记在属性或方法上:作用于序列化与反序列化: 2 属性别名@JsonProperty,序列化/反序列化都有效: 3 属性排序@JsonPropertyOrder,注释在类声明中: 4 属性格式转换使用自定义序列化/反序列化来