文章目录

  • 【1】功能(驼峰转下划线)
  • 【2】测试用例
  • 【3】如果使用有Bug,欢迎评论区留言

【1】功能(驼峰转下划线)

  1. 只遍历输入字符串一遍
  2. 能够处理处理连续的大写字母如 HTTP
  3. 首字母可大写可小写
/*** 双指针法* 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等大写)相关推荐

  1. JavaScript 驼峰命名转下划线命名

    function toUnderLine(str) {let nstr = str.replace(/[A-Z]/g, function ($0) {return "_" + $0 ...

  2. java 下划线转驼峰命名_Java驼峰命名 下划线命名 互转

    使用场景 sql字段转为java字段,直接从数据库通过sql语句 取出来的数据都是数据库字段,如果需要反射实例化对象 则需要把从下划线命名转为驼峰命名. /*** * 下划线命名转为驼峰命名 * * ...

  3. Spring Boot——统一设置返回Json数据风格(Java驼峰命名法转下划线命名法)解决方案

    基本概念 HttpMessageConverter: org.springframework.http.converter.HttpMessageConverter 是一个策略接口 接口说明如下: S ...

  4. js算法题:驼峰命名法转下划线命名法

    最近遇到这样一道手写代码题就是:如 onClickHandleBind把它 转成 on_click_handle_bind 先说思路: 1.先把onClickHandleBind所有字母转成小写(或者 ...

  5. IDEA自定义模板:快速指定一个数据库映射字段(驼峰生成下划线命名)

    用途 在数据库映射类中快速生成代码. 字段对应的注解,可以根据驼峰命名快速生成相应的数据库命名 步骤 1. 自定义代码模板 File -> Settings -> Editor -> ...

  6. php类属性命名驼峰还是下划线,PHP实现驼峰命名和下划线命名互转

    本篇文章教大家实现驼峰命名和下划线命名互转,在php开发中经常需要两种命名法互相转换,下面为大家提供两种实现方式. 第一种方法效率相对差一些,实现方式如下://驼峰命名转下划线命名 function ...

  7. php 转驼峰,PHP实现驼峰和下划线互转

    本篇文章教大家实现驼峰命名和下划线命名互转,在php开发中经常需要两种命名法互相转换,下面为大家提供两种实现方式. 第一种方法效率相对差一些,实现方式如下://驼峰命名转下划线命名 function ...

  8. eclipselink 数据库表命名规则 驼峰转下划线/表名转换

    最近公司做SAAS项目,以前用的数据源为c3p0,数据库表的命名规则为类名(驼峰)转为下划线. 比如:PersonMsg (类)  对应  表名 person_msg(表) 而现在公司用的是eclip ...

  9. 结合Hutool工具包,实现bean对象转map(支持驼峰转下划线)

    文章目录 前言 一.Hutool 二.代码 1.依赖包 2.BeanMapUtils.class 3.测试 MainTest.class BeanTest.class BeanTest2.class ...

最新文章

  1. linux文件IO与内存映射:用户空间的IO缓冲区
  2. R新旧模型、计算净重新分类指数(NRI)和整体鉴别指数(IDI)详解及实战
  3. MySQL · 社区动态 · MariaDB 10.2 前瞻
  4. 详细图解JDK+Tomcat Web开发环境配置和HelloWorld程序
  5. 两不同网段主机直连通信过程的建立(3个实验详细分析)
  6. ret2libc过地址随机化
  7. STL中 map 和 multimap
  8. jdbc连接mysql驱动包_jdbc连接数据库驱动包
  9. va_start和va_end的使用及原理
  10. JSON值的类型:数字,字符串,逻辑值,数组,对象,null
  11. MS SQL SERVER中删除存在的临时表
  12. 小车|PID算法 闭环控制 带有 霍尔编码器 的电机
  13. PowerDesigner16.5的下载、安装
  14. 引擎所有固定变量大全
  15. python处理skl参数、ubuntu下翻译选中文字
  16. linux 下 lamp 编译安装 20160424 szx
  17. Origin绘图 默认字体设置
  18. OpenState安装及 Port Knocking 实验
  19. 有关在 Windows 上使用 Python 的常见问题解答
  20. Android开发模式万佛朝中MVX(MVC、MVP、MVVM)

热门文章

  1. 搜狗输入法用户体验分析
  2. [Presto]presto REST API
  3. Flutter移动电商实战 --(14)首页_拨打电话操作
  4. 第二章 预习导图 部署DNS服务
  5. loctionplace.reset_index(drop=True,inplace=True)
  6. 图形图像学习随笔:计算机图形学的一些基本概念
  7. 【七七八八】记录一下自己的小作品
  8. MQTT 在 Elixir 中的应用
  9. 关于Cocos2dx-js游戏的jsc文件解密
  10. 数据库作业-sql语句查询