文档章节

驼峰变量名的转换

蚂蚁-Declan
 蚂蚁-Declan
发布于 2018/10/22 10:42
字数 312
阅读 23
收藏 1
package com.mmall.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 需求:1. 将字符串 user_name_abc 转换为 userNameAbc
 *      2. 将字符串 userNameAbc 转化为 user_name_abc
 * @author Declan
 */
public class Test {

    public static void main(String[] args) {

        System.out.println((int)'A');
        long startTime = System.currentTimeMillis();
        String lowCaseStr = "user_name_abc";
        String humpCaseStr = "userNameAbc";
        for(int i=0; i<10000; i++){
            System.out.println(lowCaseStr+" >> "+lowCaseConvert2Hump_1(lowCaseStr));
//        System.out.println(lowCaseStr+" >> "+lowCaseConvert2Hump_2(lowCaseStr));
            System.out.println(humpCaseStr+" >> "+humpConvert2lowCase_1(humpCaseStr));
//        System.out.println(humpCaseStr+" >> "+humpConvert2lowCase_2(humpCaseStr));
        }
        long endTime = System.currentTimeMillis();
        System.out.println("************ 所用时间(ms): "+(endTime-startTime)+"***********");

    }

    /**
     * 方法1
     * @param str
     * @return
     */
    public static String lowCaseConvert2Hump_1(String str){
        String[] split = str.split("_");
        StringBuilder stringBuilder = new StringBuilder(split[0]);
        for (int i=1; i<split.length; i++){
            String tmpStr = split[i];
            char c = (char)(tmpStr.charAt(0)-32);
            tmpStr = c+tmpStr.substring(1);
            stringBuilder.append(tmpStr);
        }
        return stringBuilder.toString();
    }

    /**
     * 方法2  用正则表达式实现  user_name_abc 转换为 userNameAbc
     * @param str
     * @return
     */
    public static String lowCaseConvert2Hump_2(String str){
        Pattern pattern = Pattern.compile("_[\\w]");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()){
            String group = matcher.group();
            str = str.replace(group, group.toUpperCase());
        }
        return str.replaceAll("_", "");

    }

    /**
     * 方法1
     * @param str
     * @return
     */
    public static String humpConvert2lowCase_1(String str){
        StringBuilder stringBuilder = new StringBuilder();
        char[] chars = str.toCharArray();
        for (char c : chars){
//            if(c>='A' && ascii<='Z'){
            if(Character.isUpperCase(c)){
                c = (char)(c +32);
                stringBuilder.append("_"+c);
            }else{
                stringBuilder.append(c);
            }
        }
        return stringBuilder.toString();
    }


    /**
     * 方法2  用正则表达式实现
     * @param str
     * @return
     */
    public static String humpConvert2lowCase_2(String str){
        return str.replaceAll("[A-Z]{1}","_$0").toLowerCase();
    }


}

   经过测试,使用正则表达式的话,需要更长的时间,效率更低一些。

© 著作权归作者所有

共有 人打赏支持
蚂蚁-Declan
粉丝 3
博文 34
码字总数 59120
作品 0
浦东
高级程序员
私信 提问
python基础之标识符、关键字、变量的命名规则、变量的输入和输出

一、标识符和关键字 1、标示符就是程序员定义的变量名、函数名 注意:标识符可以由字母、下划线、和数字组成;不能以数字开头;不能与关键字重名。 2、关键字就是在 Python 内部已经使用的标...

weixin_43706509
2018/12/09
0
0
开发笔记14 | Java 代码规约第 4 条

返回规约清单列表 规约类型:编程规约 - 命名风格 规约级别:强制 规约描述:方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式 正例: localValue / g...

银时
2018/11/26
0
0
swift命名规范

程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要。 命名方法很多,但是比较有名的,广泛接受命名法有:  匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀...

法斗斗
2016/03/03
45
0
angularjs指令名是怎么回事?

疑惑 查了很多资料,对指令名的介绍都是一笔带过,只说是驼峰形式. 但是在实际使用时,经常遇到定义的指令名与指令标签对应不上的情况. 对指令名就感到非常疑惑. 定义时指令名是一种形式,使...

yongqing
2014/08/12
129
0
《从零开始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范

原创文章,欢迎转载。转载请注明:关东升的博客 程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要。 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名...

智捷课堂
2016/01/06
45
0

没有更多内容

加载失败,请刷新页面

加载更多

事务隔离:为什么你改了我还看不见

1 事务就是要保证一组数据库的操作,要么全部成功,要么全部失败。mysql中事务支持是在引擎层实现的。mysql是支持多引擎的 2 隔离性和隔离级别 ACID Atomicity,Consistency,Isolation,Durab...

writeademo
刚刚
0
0
高性能分布式锁实现方案(非轮询)

随着笔者的颜值日渐提高,笔者所在的公司,产品的用户日益增长。 集群也好,分布式服务也好。当我们不能保证团队成员的整体素质,那么在某些业务上,分布式锁自然没法避免。 公认开发原则:能...

Coody
1分钟前
0
0
Ubuntu18安装docker-ce

1.先更新系统并安装相关依赖包 $ sudo apt update$ sudo apt install apt-transport-https ca-certificates curl software-properties-common 2.新建并编辑etc/apt/sources.list.d/docker......

ykbj
1分钟前
0
0
快捷键设置

文件 =》首选项 =》键盘快捷方式 定义 ctrl+k 快速清屏,不需要重启 { "key": "ctrl+k", "command": "workbench.debug.panel.action.clearReplAction", "when": "inDebugRe......

轻轻的往前走
2分钟前
0
0
2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势(下)

摘要: 回顾2018,展望2019,计算机科学技术继续前进! 4、工具和库 工具和库是数据科学家的基础。我参与了大量关于哪种工具最好的辩论,哪个框架会取代另一个,哪个库是经济计算的缩影等等。...

阿里云官方博客
5分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部