【java基础-实战1】字符串的驼峰与下划线互转

news2024/9/19 11:16:41

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
坚持不懈,越努力越幸运,大家一起学习鸭~~~

驼峰

背景

在日常开发过程中,驼峰与下划线的互相转换也是比较常见的操作。比如db中表的列名是一划线命名,而java实体命名则是驼峰格式命名。 下面将介绍几种驼峰与下划线互转的实现方式。

1. Gauva:CaseFormat类

 // 驼峰转下划线
String ans = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "helloWorld"); 
System.out.println(ans); //hello_world

// 下划线转驼峰
String ans2 = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "hello_world"); 
System.out.println(ans2); //helloWorld

注意
驼峰转下划线,一般指将大写字母转小写,并将大写字母前面加上下划线;
下线线转驼峰,一般指将下划线去掉,并将下划线后面的一个字母转为大写。
所以,对于不规则的输入,如helloworldCase, 驼峰转下划线一般会转成:helloworld_case; 对于helloworld_case,下划线转驼峰一般会转成helloworldCase

2.Hutool: StrUtil类

除了上面的guava,hutool的使用也非常广,其中包含很多工具类,其 StrUtil 也提供了下划线与 驼峰的互转支持

//下划线转驼峰
String ans = StrUtil.toCamelCase("hello_world");
System.out.println(ans); //helloWorld

//驼峰转下划线
String ans2 = StrUtil.toUnderlineCase("helloWorld"); System.out.println(ans2); //hello_world

3.自定义实现

3.1 驼峰转下划线

关键点:大写字母,则前位补一个下划线,当前字符转小写(如果前面已经是一个下划线了, 那前面不补,直接转小写即可)

 public static String toUnderCase(String name) {
    if (name == null) {
        return null; 
    }
    int len = name.length();
    StringBuilder res = new StringBuilder(len + 2); 
    char pre = 0;
    for (int i = 0; i < len; i++){ 
        char ch = name.charAt(i);
        if (Character.isUpperCase(ch)) { 
            if (pre != UNDER_LINE) {
                res.append(UNDER_LINE); 
            }
        res.append(Character.toLowerCase(ch)); 
        } else {
            res.append(ch); 
            
        }
        pre = ch; 
    }
    return res.toString(); 
     
 }

3.2 下划线转驼峰

关键点:找到下划线,然后去掉它,下一个字符转大写续上(如果下一个还是下划线,那 继续找下一个)


    private static final char UNDER_LINE = '_';
    
    /**
     * 下划线转驼峰 *
     *
     * @param name * @return
     */
    public static String toCamelCase(String name) {
        if (null == name || name.length() == 0) {
            return null;
        }
        int length = name.length();
        StringBuilder sb = new StringBuilder(length);
        boolean underLineNextChar = false;
        for (int i = 0; i < length; ++i) {
            char c = name.charAt(i);
            if (c == UNDER_LINE) {
                underLineNextChar = true;
            } else if (underLineNextChar) {
                sb.append(Character.toUpperCase(c));
                underLineNextChar = false;
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1061655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lv7 嵌入式开发-网络编程开发 08 TCP并发功能

目录 1 TCP 多进程并发 1.1 现象&#xff1a; 1.2 多进程并发 2 僵尸进程处理 3 TCP并发多线程 4 练习 1 TCP 多进程并发 1.1 现象&#xff1a; 之前的代码&#xff0c;先关服务端&#xff0c;再次打开会出现错误bind:Address already in use 使用setsockopt 地址快速重…

C++——stack和queue

作者&#xff1a;几冬雪来 时间&#xff1a;2023年10月5日 内容&#xff1a;C——stack和queue内容讲解 目录 前言&#xff1a; 什么是stack和queue&#xff1a; 适配器模式&#xff1a; stack&#xff1a; queue&#xff1a; deque&#xff1a; 相比vector和list&a…

两文学会scala (上)|保姆级别教程(超详细)

目录 一 Scala入门 1.1 概述 1.1.1 为什么学习Scala 1.1.2 Scala发展历史 1.1.3 Scala和Java关系 1.1.4 Scala语言特点 1.2 scala 运行环境准备 二 变量和数据类型 2.1 注释 1&#xff09;基本语法 2&#xff09;案例实操 3&#xff09;代码规范 2.2 变量和常量&a…

基于Java的自习室预订座位管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

用稳定扩散生成4K PBR纹理【SDXL】

我正在继续去年开始使用 Three.JS 构建 3D 场景和草图的工作。 当时&#xff0c;DALL-E 和 Stable Diffusion 等 AI 图像生成器刚刚真正起飞。 我成功地在本地运行稳定扩散&#xff0c;并使用它为我正在构建的 3D 世界中的地形、建筑物和其他环境生成纹理。 当时我使用的是稳…

sd卡数据异常丢失怎么办?别慌,有这五种应对方法

随着SD卡在我们的生活中越来越广泛地使用&#xff0c;我们很可能会遇到SD卡数据异常丢失的情况。这种情况可能会给我们带来困扰和不便&#xff0c;因为丢失的数据可能包含了我们珍贵的照片、音乐、视频和文件等重要信息。幸运的是&#xff0c;在大多数情况下&#xff0c;我们仍…

多目标跟踪框架boxmot介绍

引言 boxmot由mikel brostrom开发&#xff0c;用于目标检测&#xff0c;分割和姿态估计模型的SOTA&#xff08;state of art&#xff09;跟踪模块&#xff0c;现已加入python第三方库 PYPI&#xff0c;可用pip包管理器进行安装。 boxmot所支持的跟踪器采用外观特征识别方法&am…

一文了解VR全景在城市园区和电子楼书的应用

引言&#xff1a; 虚拟现实&#xff08;VR&#xff09;技术在日常生活中越发普及&#xff0c;已经成为众多行业的宣传工具&#xff0c;房地产行业近些年来热度较低&#xff0c;VR全景为房地产展示带来了新方式&#xff0c;为购房者提供更真实、更直观的体验。 一&#xff0e;…

练[MRCTF2020]Ez_bypass

[MRCTF2020]Ez_bypass 文章目录 [MRCTF2020]Ez_bypass掌握知识解题思路关键paylaod 掌握知识 ​ 代码审计&#xff0c;md5函数绕过&#xff0c;is_numeric函数绕过&#xff0c;弱等于的字符串和数字类型绕过 解题思路 打开题目链接&#xff0c;发现是代码审计题目&#xff0…

基于猫群优化的BP神经网络(分类应用) - 附代码

基于猫群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于猫群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.猫群优化BP神经网络3.1 BP神经网络参数设置3.2 猫群算法应用 4.测试结果&#xff1a;5.M…

buuctf-[BSidesCF 2020]Had a bad day 文件包含

打开环境 就两个按钮&#xff0c;随便按按 url变了 还有 像文件包含&#xff0c;使用php伪协议读取一下&#xff0c;但是发现报错&#xff0c;而且有两个.php,可能是自己会加上php后缀 所以把后缀去掉 /index.php?categoryphp://filter/convert.base64-encode/resourcei…

从0开始深入理解并发、线程与等待通知机制(中)

一&#xff0c;深入学习 Java 的线程 线程的状态/生命周期 Java 中线程的状态分为 6 种&#xff1a; 1. 初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用 start()方法。 2. 运行(RUNNABLE)&#xff1a;Java 线程中将就绪&#xff08;ready&#xff09;和…

Endnote修改参考文献(References)的期刊全称为缩写

一、准备&#xff08;下载&#xff09;所需要的期刊缩写列表 &#xff08;Term Lists&#xff09; 我已经下载并上传了一份Trem Lists 链接: 在不列颠哥伦比亚大学图书馆网站导出所有期刊名和缩写&#xff0c;大概1W的期刊名字&#xff0c;期刊名字和缩写截至2021.12.03 哥伦…

【抢先体验】开通使用 ChatGPT 语音版功能保姆级教程

大家好&#xff0c;我是苍何&#xff0c;一个土木转码的非典型程序员&#xff0c;也是一名技术管理者&#xff0c;同时也是 AI 应用的探索者。今天在视频号上看到和 ChatGPT 语音对话的视频&#xff0c;其声音的真实感太让人震撼了&#xff0c;于是也想去抢先体验一下 ChatGPT …

学习记忆——宫殿篇——记忆宫殿——记忆桩——卧室——莫兰勋爵在地铁走失的案子

《神探夏洛克》第三季第一集中提到“思维殿堂”&#xff0c;其实指的就是记忆宫殿。讲述了一个名叫莫兰勋爵在地铁走失的案子&#xff0c;这里简单给大家罗列以下破案信息&#xff1a; 订阅报纸的男人、伦敦养狗的女人、穿着黑色运动的非裔女人、松木、云杉、雪松、新樟脑球、碳…

js——深拷贝和浅拷贝

深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。对于基本数据类型&#xff0c;例如字符串、数字、布尔值等&#xff0c;由于它们是按值传递的&#xff0c;所以不存在深拷贝和浅拷贝的问题。 深拷贝 将对象从内存中完整拷贝出来&#xff0c;从堆内存中开辟一个新的…

mac电脑任务管理器 Things3 for Mac中文

Things 3是一款效率软件&#xff0c;可以帮助用户规划一天行程、管理项目&#xff0c;并使使用者按部就班地朝目标迈进。以下是Things 3的主要特点和功能&#xff1a; 待办事项&#xff1a;以“待办事项”为基本组成部分&#xff0c;每一则待办事项都是迈向大成就的一小步。用…

【每日一题】买卖股票的最佳时机含冷冻期

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;动态规划空间优化 写在最后 Tag 【动态规划】【数组】【2023-10-05】 题目来源 309. 买卖股票的最佳时机含冷冻期 题目解读 这是股票系列问题的第五篇了&#xff0c;要求求出买卖股票的最佳时期以获得最大的利润&…

基于spirngboot人事考勤管理信息系统

一&#xff1a;功能介绍 本系统前端采用vue框架以及Elemnt-UI,后端采用springboot、mysql、redis、mybatis等技术栈。 主要功能有登录、员工考勤、数据统计、薪资管理、权限管理、打卡管理、考勤审核、请假审批、薪资发放、报表统计、文件上传、文件下载、考勤设置、请假设置。…