java采用匈牙利命名法_【Java】工具类,如何将匈牙利命名法转换成驼峰命名法-Go语言中文社区...

一、概念介绍

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

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;

}

}

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

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页