Java 驼峰命名转下划线命名(能正确处理连续HTTP等大写)
文章目录
- 【1】功能(驼峰转下划线)
- 【2】测试用例
- 【3】如果使用有Bug,欢迎评论区留言
【1】功能(驼峰转下划线)
- 只遍历输入字符串一遍
- 能够处理处理连续的大写字母如 HTTP
- 首字母可大写可小写
/*** 双指针法* l之前的表示已经转换过的字符* l-r之间的表示需要被转换的单词* r之后表示还没有循环到的字符** @param s 传入的字符串* @return*/public static StringBuilder trans(String s) {StringBuilder stringBuilder = new StringBuilder();int l = 0;int r = 0;while (r < s.length()) {//如果下一个字符是小写if (r + 1 < s.length() && !isUpper(s.charAt(r + 1))) {while (true) {r++;if (r == s.length()) {stringBuilder.append(s.substring(l).toLowerCase());return stringBuilder;}if (isUpper(s.charAt(r))) {stringBuilder.append(s.substring(l, r).toLowerCase() + "_");l = r;break;}}} else if (r + 1 < s.length()) {//如果下个字符是连着的大写 如HTTP//判断是不是第一个字符,如果不判断则会出现aA 变为aa的情况 而不是a_aif (r == 0 && isUpper(s.charAt(r + 1))) {r++;stringBuilder.append(s.substring(l, r).toLowerCase() + "_");l = r;} else {while (true) {r++;if (r == s.length()) {stringBuilder.append(s.substring(l).toLowerCase());return stringBuilder;}if (!isUpper(s.charAt(r))) {r--;stringBuilder.append(s.substring(l, r).toLowerCase() + "_");l = r;break;}}}} else {//如果是到达最后了stringBuilder.append(s.substring(l).toLowerCase());r++;}}return stringBuilder;}public static boolean isUpper(char c) {return c >= 'A' && c <= 'Z';}
【2】测试用例
System.out.println(trans(""));System.out.println(trans(" "));System.out.println(trans("isTrue"));System.out.println(trans("myFirstName"));System.out.println(trans("OnlineUsers"));System.out.println(trans("Address"));System.out.println(trans("validHTTPRequest"));System.out.println(trans("ValidHTTPSRequestCall"));System.out.println(trans("UsingHTTPS"));
输出:
is_true
my_first_name
online_users
address
valid_http_request
valid_https_request_call
using_https
【3】如果使用有Bug,欢迎评论区留言
Java 驼峰命名转下划线命名(能正确处理连续HTTP等大写)相关推荐
- JavaScript 驼峰命名转下划线命名
function toUnderLine(str) {let nstr = str.replace(/[A-Z]/g, function ($0) {return "_" + $0 ...
- java 下划线转驼峰命名_Java驼峰命名 下划线命名 互转
使用场景 sql字段转为java字段,直接从数据库通过sql语句 取出来的数据都是数据库字段,如果需要反射实例化对象 则需要把从下划线命名转为驼峰命名. /*** * 下划线命名转为驼峰命名 * * ...
- Spring Boot——统一设置返回Json数据风格(Java驼峰命名法转下划线命名法)解决方案
基本概念 HttpMessageConverter: org.springframework.http.converter.HttpMessageConverter 是一个策略接口 接口说明如下: S ...
- js算法题:驼峰命名法转下划线命名法
最近遇到这样一道手写代码题就是:如 onClickHandleBind把它 转成 on_click_handle_bind 先说思路: 1.先把onClickHandleBind所有字母转成小写(或者 ...
- IDEA自定义模板:快速指定一个数据库映射字段(驼峰生成下划线命名)
用途 在数据库映射类中快速生成代码. 字段对应的注解,可以根据驼峰命名快速生成相应的数据库命名 步骤 1. 自定义代码模板 File -> Settings -> Editor -> ...
- php类属性命名驼峰还是下划线,PHP实现驼峰命名和下划线命名互转
本篇文章教大家实现驼峰命名和下划线命名互转,在php开发中经常需要两种命名法互相转换,下面为大家提供两种实现方式. 第一种方法效率相对差一些,实现方式如下://驼峰命名转下划线命名 function ...
- php 转驼峰,PHP实现驼峰和下划线互转
本篇文章教大家实现驼峰命名和下划线命名互转,在php开发中经常需要两种命名法互相转换,下面为大家提供两种实现方式. 第一种方法效率相对差一些,实现方式如下://驼峰命名转下划线命名 function ...
- eclipselink 数据库表命名规则 驼峰转下划线/表名转换
最近公司做SAAS项目,以前用的数据源为c3p0,数据库表的命名规则为类名(驼峰)转为下划线. 比如:PersonMsg (类) 对应 表名 person_msg(表) 而现在公司用的是eclip ...
- 结合Hutool工具包,实现bean对象转map(支持驼峰转下划线)
文章目录 前言 一.Hutool 二.代码 1.依赖包 2.BeanMapUtils.class 3.测试 MainTest.class BeanTest.class BeanTest2.class ...
最新文章
- linux文件IO与内存映射:用户空间的IO缓冲区
- R新旧模型、计算净重新分类指数(NRI)和整体鉴别指数(IDI)详解及实战
- MySQL · 社区动态 · MariaDB 10.2 前瞻
- 详细图解JDK+Tomcat Web开发环境配置和HelloWorld程序
- 两不同网段主机直连通信过程的建立(3个实验详细分析)
- ret2libc过地址随机化
- STL中 map 和 multimap
- jdbc连接mysql驱动包_jdbc连接数据库驱动包
- va_start和va_end的使用及原理
- JSON值的类型:数字,字符串,逻辑值,数组,对象,null
- MS SQL SERVER中删除存在的临时表
- 小车|PID算法 闭环控制 带有 霍尔编码器 的电机
- PowerDesigner16.5的下载、安装
- 引擎所有固定变量大全
- python处理skl参数、ubuntu下翻译选中文字
- linux 下 lamp 编译安装 20160424 szx
- Origin绘图 默认字体设置
- OpenState安装及 Port Knocking 实验
- 有关在 Windows 上使用 Python 的常见问题解答
- Android开发模式万佛朝中MVX(MVC、MVP、MVVM)