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

一、概念介绍

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;
    }
}

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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/River_Continent/article/details/81064353