如test_tb_kkk_llll 轉換為 TestTbKkkLlll
原理:
1. 判斷是否包含下劃線
(1) 包含:
① 按下劃線将字元串切割成字元串數組
② 在循環裡調用本方法(這個字元串肯定不包含下劃線)(遞歸)
(2) 不包含:
① 轉換成字元數組
② 根據ASCII表将首字母變大寫
ASCII表中的小寫字母比大寫大32,減去32即可,看下圖即可
代碼如下:
/**
* 方法說明 :将首字母和帶 _ 後第一個字母 轉換成大寫
*
* @return :String
* @author :HFanss
* @date :2018年5月31日下午9:52:19
*/
public static String upperTable(String str)
{
// 字元串緩沖區
StringBuffer sbf = new StringBuffer();
// 如果字元串包含 下劃線
if (str.contains("_"))
{
// 按下劃線來切割字元串為數組
String[] split = str.split("_");
// 循環數組操作其中的字元串
for (int i = 0, index = split.length; i < index; i++)
{
// 遞歸調用本方法
String upperTable = upperTable(split[i]);
// 添加到字元串緩沖區
sbf.append(upperTable);
}
} else
{// 字元串不包含下劃線
// 轉換成字元數組
char[] ch = str.toCharArray();
// 判斷首字母是否是字母
if (ch[0] >= 'a' && ch[0] <= 'z')
{
// 利用ASCII碼實作大寫
ch[0] = (char) (ch[0] - 32);
}
// 添加進字元串緩存區
sbf.append(ch);
}
// 傳回
return sbf.toString();
}