package com.lfk.test;
/**
* 实现功能 将xxx_xxx_xxx 转换为xxxXxxXxx 或 将xxxXxxXxx转换为xxx_xxx_xxx
* @author LFK
* @version 2018年10月19日
*/
public class Demo2 {
/**
* 将xxx_xxx_xxx 转换为xxxXxxXxx
* @param str
* @return
*/
public static String toUp(String str) {
String[] sp = str.split("_"); //以“_”拆分字符串
StringBuffer fstr = new StringBuffer(sp[0]); //首字母不需大写,提前放入
char[] ch = new char[10];
for(int i = 1 ; i < sp.length ; i ++) {
ch = sp[i].toCharArray(); //拆分后的String转为char数组,便于首字母大写
if (ch[0] >= 97 && 122 >= ch[0]) {
ch[0] -= 32;
}
fstr.append(String.valueOf(ch));
}
return fstr.toString();
}
/**
* 将xxxXxxXxx转换为xxx_xxx_xxx
* @param str
* @return
*/
public static String tolow(String str) {
char[] ch = str.toCharArray(); //String转char数组,便于查找大写字母
int[] flag = new int[ch.length]; //记录大写字母在char数组中的下标
int temp = 0;
for (int i = 0 ; i < ch.length ; i ++) {
if (90 >= ch[i] && 65 <= ch[i]) { //寻找大写字母并小写之
ch[i] += 32;
flag[temp] = i;
temp ++;
}
}
String fstr = String.valueOf(ch);
for (int i = temp -1 ; i >= 0 ; i --) { //倒序遍历下标数组
fstr = fstr.substring(0,flag[i])+"_"+fstr.substring(flag[i]); //插入“_”
}
return fstr;
}
public static void main(String[] args) {
String test_1 = "abc_def_ghi";
String test_2 = "abcDefGhi";
System.out.println(toUp(test_1));
System.out.println(tolow(test_2));
}
}
见动弹有感,参考String首字母大写
这篇博客探讨了如何实现字符串格式的转换,从'xxx_xxx_xxx'形式转变为'xxxXxxXxx',反之亦然。作者受到某个灵感启发,并参照了String类中首字母大写的特性,提供了转换方法。

8万+

被折叠的 条评论
为什么被折叠?



