最近遇到CVTE的一道编程题为:编写一个函数fn(str),将驼峰命名的字符串转换为“aa_aa”,例如(HelloWorld转化为hello_world).
编写过程如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
function check_upper(obj){
if(/^[A-Z]+$/.test(obj)){
return true;
}
}
function upperIndex(str){
var arr=[];
for(var i=0; i<str.length; i++)
{
if(check_upper(str[i]))
{
arr.push(i);
}
}
return arr;
}
function fn(str){
var arr=str.split('');
var aIndex=upperIndex(str); //记录大写字母索引
for(var i = 1; i < aIndex.length; i++){
arr.splice(aIndex[i],0,'_');
aIndex=upperIndex(arr); //每插入一个‘_’需重新获取大写字母索引
console.log(aIndex);
}
console.log(str);
var Str=arr.join('').toLowerCase();
console.log(Str);
}
fn('HelloWorldLoPsPa');
</script>
</body>
</html>
本题的重点是:1.字符串和数组的相互转换;2.字符的大小写判断;3.数组中每插入一个字符需重新获取字符串中大写字母的索引值。