驼峰命名(CamelCase)与下划线命名(snake_case)互相转换

目录

一、使用Guava库

1.1 从驼峰转换到下划线

2..2 从下划线转换到驼峰

二、使用Apache Commons Lang库

2.1 从驼峰转换到下划线

2.1 从下划线转换到驼峰

三、使用Hutool库

3.1 从驼峰转换到下划线

3.1 从下划线转换到驼峰


一、使用Guava库

Guava库中的CaseFormat类提供了转换不同命名风格的方法。

pom.xml文件中添加如下依赖

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.1-jre</version>
</dependency>

1.1 从驼峰转换到下划线

import com.google.common.base.CaseFormat;
​
public class CaseConverter {
    public static void main(String[] args) {
        String camelCase = "camelCaseExample";
        String snakeCase = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, camelCase);
        System.out.println(snakeCase); // 输出: camel_case_example
    }
}

2..2 从下划线转换到驼峰

import com.google.common.base.CaseFormat;
​
public class CaseConverter {
    public static void main(String[] args) {
        String snakeCase = "camel_case_example";
        String camelCase = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, snakeCase);
        System.out.println(camelCase); // 输出: camelCaseExample
    }
}

二、使用Apache Commons Lang库

Apache Commons Lang库中的StringUtils类可以结合正则表达式使用来进行转换。

pom.xml文件中添加如下依赖

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>
​

2.1 从驼峰转换到下划线

import com.google.common.base.CaseFormat;
​
public class CaseConverter {
    public static void main(String[] args) {
    String camelCase = "camelCaseExample";
    // 使用正则表达式进行替换操作
    String snakeCase = camelCase.replaceAll("([A-Z])", "_$1").toLowerCase();
    System.out.println(snakeCase); // 输出: camel_case_example
}

对正则表达式 "([A-Z])" 和替换操作 "_$1" 进行详细解析:

  • 正则表达式 "([A-Z])":

    • ( 和 ) 表示一个捕获组,用于匹配并捕获大写字母。

    • [A-Z] 是一个字符类,表示匹配任何大写字母 A 到 Z。

  • 替换操作 "_$1":

    • _ 是字面量字符,表示下划线。

    • $1 是反向引用,引用的是正则表达式中第一个捕获组的内容,即所有匹配到的大写字母。

  • 整个 replaceAll 方法的作用是:

    • 查找所有大写字母,并在每个大写字母前插入一个下划线。

    • toLowerCase() 方法用于将转换后的字符串中的所有字符转换为小写,以符合下划线命名法的标准。

2.1 从下划线转换到驼峰

import org.apache.commons.lang3.StringUtils;
​
public class CaseConverter {
    public static void main(String[] args) {
        String snakeCase = "camel_case_example";
​
        // 使用 StringUtils 的多个方法组合来转换字符串格式
        String camelCase = StringUtils.uncapitalize( // 将字符串的第一个字符转为小写
            StringUtils.join( // 将字符串数组连接成一个字符串,中间不添加任何分隔符
                StringUtils.splitByCharacterTypeCamelCase( // 按照 Camel Case 风格拆分字符串,这里先将字符串转为大写形式
                    snakeCase.toUpperCase()), "")); // 空字符串作为连接符
​
        System.out.println(camelCase); // 输出转换后的 camelCase 格式的字符串
    }
}
  • splitByCharacterTypeCamelCase 方法:

    • 这个方法会根据 Camel Case 风格(即大写字母前的分界)来分割字符串。但是,在此之前,我们将 snakeCase 字符串转换为了大写形式(toUpperCase()),这样原本的下划线就会消失,而每个单词的首字母都会变成大写,从而可以被这个方法正确地识别为 Camel Case 风格。

    • 结果是一个字符串数组,其中每个元素都是原 snakeCase 字符串中由下划线分隔的单词的大写形式。

  • join 方法:

    • 接下来使用 join 方法将上一步得到的字符串数组连接起来,由于传入的连接符是空字符串 "",所以这些单词会被直接连接在一起,没有额外的分隔符。

  • uncapitalize 方法:

    • 最后调用 uncapitalize 方法将整个字符串的首字母转换为小写,这是因为 Camel Case 的定义是除了第一个单词外,其他单词的首字母大写,而第一个单词的首字母小写。

三、使用Hutool库

Hutool库中的StrUtil类提供了转换的方法。

pom.xml文件中添加如下依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.13</version>
</dependency>

3.1 从驼峰转换到下划线

import cn.hutool.core.lang.StrPool;
import cn.hutool.core.util.StrUtil;
​
public class CamelCaseConverter {
    public static void main(String[] args) {
        String camelCase = "thisIsACamelCaseString";
        String snakeCase = StrUtil.camelToUnderline(camelCase);
        System.out.println(snakeCase); // 输出: this_is_a_camel_case_string
    }
}

3.1 从下划线转换到驼峰

import cn.hutool.core.lang.StrPool;
import cn.hutool.core.util.StrUtil;
​
public class SnakeCaseConverter {
    public static void main(String[] args) {
        String snakeCase = "this_is_a_snake_case_string";
        String camelCase = StrUtil.underlineToCamel(snakeCase, false);
        System.out.println(camelCase); // 输出: thisIsASnakeCaseString
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伏颜.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值