这里提到的字符串格式为:packageBusinessFlag 转换后:PACKAGE_BUSINESS_FLAG
为什么做这个:
公司需要将json转换成xml其中代码已经存在。但是转换之后确是packageBusinessFlag不符合要求,so就写了个字符串转换的方法。
思路:
(1)判断首字母是否大写,若小写将字符串按照大写分组,否则将字符串转换为大写;
(2)循环数组,判断index>0时进行数组内字符串修改(ps:分组时大写字母干掉了);
(3)index>0时result+="_"+字符串转换为大写;
(4)index<0时result=字符串转换为大写;
代码:
/**
* 改变字符串为标签样式
* @param name
* @returns {string}
*/
function str2label(name) {
var result = "";
//首字母小写执行标签化
if (!name.charAt(0).match(/[A-Z]+/)) {
//根据大写字母进行分组
var names = name.split(/[A-Z]+/);
//循环数组
$.each(names, function (index, item) {
//判断index>0时进行添加字母处理
if (index > 0) {
//分组时干掉的字母位置
var strlength = 0;
//循环获得字母位置
for (var i = index; i > 0; i--) {
strlength += names[i - 1].length;
}
//从源字符串中截取字母
var str = name.substring(strlength, strlength + 1);
//将字母添加到相应位置
names[index] = str + item;
//组合成相应标签格式
result += "_" + names[index].toUpperCase();
} else {
//数组第一个不用加下划线
result = names[index].toUpperCase();
}
});
} else {
result = name.toUpperCase();
}
return result
};
遇到的问题:
忘记添加首字母判断导致拆分错误。例如:PPT转换后_P__P__T