文档章节

驼峰变量名的转换

蚂蚁-Declan
 蚂蚁-Declan
发布于 10/22 10:42
字数 312
阅读 16
收藏 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
博文 26
码字总数 41882
作品 0
浦东
高级程序员
私信 提问
我的命名规则

命名规则 全局变量,带前缀g,不带类型前缀,后面第一个字母大写,采用驼峰命名法 ` 普通变量,带类型前缀,后面第一个字母大写,采用驼峰命名法 函数参数,可以不带前缀,后面第一个字母大写...

yintao
2016/08/17
34
0
swift命名规范

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

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

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

yongqing
2014/08/12
129
0
python 命名规范

1.项目名称 首字母大写+大写式驼峰, ProjectName 2.模块名和包名 全部小写+下划线驼峰 modulename packagename 3.类名称,异常 首字母大写+大写式驼峰, class ClassName: ,ExceptionName...

恶魔苏醒ing
01/10
0
0
《从零开始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范

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

智捷课堂
2016/01/06
45
0

没有更多内容

加载失败,请刷新页面

加载更多

aws S3 util demo

package com.example.demo;import com.amazonaws.AmazonClientException;import com.amazonaws.AmazonServiceException;import com.amazonaws.auth.BasicAWSCredentials;import co......

经常把天聊死的胖子
10分钟前
1
0
我们知道CDN护航了双11十年,却不知道背后有那么多故事

摘要: 一路走来,文景也曾疑惑过:为什么我们不能把活动的时间跨度拉长到3天,或者1周呢?那样我们或许就不必冒着如此大的风险,承受日常峰值是10倍以上的压力啊!然而当他走到现在才深刻的...

阿里云官方博客
19分钟前
2
0
linux下查看cpu、memo、io、swap性能数据脚本

直接贴脚本: 1、cpu #!/bin/bashCurrentDate=`date -d today '+%Y%m%d'`CurrentTime=`date -d today '+%Y%m%d%H%M'`mytext="$CurrentTime\t`top -b -n 1 | grep Cpu\(s\......

郑加威
22分钟前
2
0
MySQL之——查询重复记录、删除重复记录方法大全

MySQL之——查询重复记录、删除重复记录方法大全

安小乐
26分钟前
1
0
spring容器启动,停止,关闭事件监听-ApplicationEvent

ApplicationEvent ApplicationEvent相当于一个事件,所有自定义事件都需要继承这个抽象类。在Eclipse中Ctrl+Shift+H调用类的层次结构列表,可以看到如下 Application下抽象子类ApplicationCo...

tantexian
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部