1. 写一个字符创转成驼峰的方法?
列如:border-bottom-color -> borderBottomColor
var str='border-bottom-color';
function test(str){
// toUpperCase()
var arr=str.split('-');// [border,bottom,color]
for(var i=1;i<arr.length;i++){
arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substring(1)//[border,Bottom,Color]
}
return arr.join('');
}
alert(test(str))
正则方法:
function test(str){
var re=/-(\w)/g;
return str.replace(re,function($0,$1){
return $1.toUpperCase();
})
}
alert(test(str));
2.查找字符串中出现最多的字符和个数?
列如:sdjksfssscfssdd -> 字符最多的是s,出现了7次
var str ='sdjksfssscfssdd';
function aa(str){
var obj={};
var num=0;
var value='';
for(var i=0;i<str.length;i++){
if(!obj[str[i]]){
obj[str[i]]=[]
}
obj[str[i]].push(str[i]);
}
for(attr in obj){
if(num<obj[attr].length){
num=obj[attr].length;
value=obj[attr][0];
}
}
return '字符做多的是'+value+'出现了'+num+'次'
}
alert(aa(str));
正则方法:
function aa(str){
var arr=str.split('');
arr.sort();
str=arr.join('');
var num=0;
var value='';
var re=/(\w)\1+/g;
str.replace(re,function($0,$1){
// alert($0) 全局项
// alert($1) 每一个子项
if(num<$0.length){
num=$0.length;
value=$1;
}
})
return '字符做多的是'+value+'出现了'+num+'次'
}
alert(aa(str));
aa(str)
3. 如何给字符串加千分符?
例如:3562123761 -> 3,562,123,761
var str='562123761';
function aa(str){
var arr=[];
var prev='';
var iNum=str.length%3;
var iNow=0;
var tmp='';
if(iNum!=0){
prev=str.substring(0,iNum);
arr.push(prev)
}
str=str.substring(iNum);
for(var i=0;i<str.length;i++){
iNow++;
tmp+=str[i];
if(iNow==3 && tmp){
arr.push(tmp);
iNow=0;
tmp='';
}
}
return arr.join(',');
}
alert(aa(str));
正则方法:
(?=) :前向声明
(?!) :反前向声明;
举个例子
var str='abacad';
var re=/ab/g;
str=str.replace(re,'*');
alert(str);
修改为:
var str='abacad';
var re=/a(?!b)/g;
str=str.replace(re,'*');
alert(str);
?=b //*bacad
?!b //ab*c*d
function aa(str){
var re=/(?=(?!\b)(\d{3})+$)/g;
return str.replace(re,',')
}
alert(aa(str))
4.返回一个只包含数字类型的一个数组
列如:js123ldka78sdassdfd653 -> [123,78,653]
var str='js123ldka78sdassdfd653';
function aa(str){
var new_str="";
var arr=[];
var arr2=[];
for(var i=0;i<str.length;i++){
var code=str.charAt(i).charCodeAt();
if(code>=48&&code<=57){
new_str+=str.charAt(i)
}else{
new_str+=','
}
}
arr=new_str.split(',');
for(var i=0;i<arr.length;i++){
if(arr[i]){
arr2.push(arr[i])
}
}
return arr2;
}
alert(aa(str));
正则方法:
function aa(str){
var re=/\d+/g;
str=str.match(re);
return str;
}
alert(aa(str));
网友评论