美文网首页
面试题3-字符串操作

面试题3-字符串操作

作者: 幸宇 | 来源:发表于2018-03-12 08:14 被阅读4次
    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));
    

    相关文章

      网友评论

          本文标题:面试题3-字符串操作

          本文链接:https://www.haomeiwen.com/subject/zdiwfftx.html