欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Java】工具类,如何将匈牙利命名法转换成驼峰命名法

程序员文章站 2022-07-15 09:43:30
...

一、概念介绍

1.1、匈牙利命名法:user_id,字母均小写,不同单词间用下划线分割;
1.2、驼峰命名法:userId,除了第一个单词的首字母小写,其余单词的首字母均大写,单词之间没有符号,仅仅通过单词首字母的大小写区分;
1.3、帕斯卡命名法:UserId,所有单词的首字母均大写;

二、问题

如何将匈牙利命名法转换成驼峰命名法?

三、思路

这里有好几种方法,这里介绍一种:
1.首先我们要获取匈牙利命名法的 字符串的下划线下标的位置,例如user_old_pwd,下划线的下标为:4和8;
2、将下划线下标后面的字母大写;
3、替换掉下划线;

四、代码分析

首先,我们将字符串穿放到数组中,然后便利数据,将下划线的下标记录,求出下划线后面一位的地址,然后,将下划线后一位替换为大写,最后替换掉

4.1、替换指定位置字符为大写方法

    /**
     * 转换制定下标的String字符串的大小写
     * @param s 字符串
     * @param location 下标位置,第一个字符为下标为0;
     * @return String 返回替换大小写后的String字符串
     */
    public static String changeCase(String s,int location){
        byte [] bytes = s.getBytes();
        for(int i=0;i<bytes.length;i++) {
            if (bytes[i]>64&&bytes[i]<91&&i==location){
                bytes[i] = (byte)(bytes[i]+32);
            }else if(bytes[i]>96&&bytes[i]<123&&i==location) {
                bytes[i] = (byte)(bytes[i]-32);
            }
        }
        return s;
    }

4.2、获取下标后的位置

    /**
     * 将匈牙利命名法转换为驼峰命名法
     * 例如user_id ----->userId
     */
    public static String turnHungary2CamelCase(String s) {
        int j = 0;
        s = s.toLowerCase();
        for (int i = 0; i < s.lastIndexOf("_"); i++) {
            i = s.indexOf("_", i);
            j = i + 1;
            s = changeCase(s, j);
        }
        s = s.replace("_", "");
        return s;
    }

4.3、完整的测试类如下:

/**
 * Created by Taozhouchuan on 18-7-16.
 */
public class TestTurnHungary2Camel {



    public static void main(String[] args) {
        String s = "bser_name";
        s = turnHungary2CamelCase(s);
        System.out.println(s);
    }
    /**
     * 将匈牙利命名法转换为驼峰命名法
     * 例如user_id ----->userId
     */
    public static String turnHungary2CamelCase(String s) {
        int j = 0;
        s = s.toLowerCase();
        for (int i = 0; i < s.lastIndexOf("_"); i++) {
            i = s.indexOf("_", i);
            j = i + 1;
            s = changeCase(s, j);
        }
        s = s.replace("_", "");
        return s;
    }

    /**
     * 转换制定下标的String字符串的大小写
     * @param s 字符串
     * @param location 下标位置,第一个字符为下标为0;
     * @return String 返回替换大小写后的String字符串
     */
    public static String changeCase(String s, int location) {
        byte[] bytes = s.getBytes();
        for (int i = 0; i < bytes.length; i++) {
            if (bytes[i] > 64 && bytes[i] < 91 && i == location) {
                bytes[i] = (byte) (bytes[i] + 32);
            } else if (bytes[i] > 96 && bytes[i] < 123 && i == location) {
                bytes[i] = (byte) (bytes[i] - 32);
            }
        }
        return s;
    }
}

开源不易,欢迎扫码支持,扫码领红包!

【Java】工具类,如何将匈牙利命名法转换成驼峰命名法