算法前端笔试

1.获取字符串的长度

描述:

如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
否则如果字符 Unicode 编码 > 255 则长度为 2
输入例子:

strLength('hello world, 牛客', false)

输出例子:
17

function strLength(s, bUnicode255For1) 
{
    if(bUnicode255For1) {return s.length;}

    else{var length = s.length;
    for(var i = 0, lng = length; i < lng; i++){
        if(s.charCodeAt(i)>255){
            length ++;
        }
    }
    return length;}
}

2.邮箱字符串判断

描述:

判断输入是否是正确的邮箱格式
输入: 邮箱字符串
输出: true表示格式正确,false表示错误

实现:

function isAvailableEmail(sEmail) {
    var parter = /^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/;
    return parter.test(sEmail);
}

这题的关键是理解这个正则表达式,我们拆开来看看:

1.^[a-z0-9_+.-]+ : 这个表示以一个或多个小写字母,数字或_,+,.,-这几个个字符开头

2. \@([a-z0-9-]+\.)+ : 这个表示1中的字符连着@,后面再接着一个多个由小写字母,数字, -字符和点 .的组成的字符串。

3.[a-z0-9]{2,4}$ 这个比较简单,表示以长度为2-4的,由小写字母和数字任意组合组成的字符串结尾。

var reg=/^([\w\.])+\@(([\w])+\.)+([\w]+)+$/;等价于===var parter = /^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/;

3.将字符串转换为驼峰格式

css 中经常有类似 background-image 这种通过 - 连接的字符,通过 javascript 设置样式的时候需要将这种样式转换成 backgroundImage 驼峰格式,请完成此转换功能
1. 以 - 为分隔符,将第二个起的非空单词首字母转为大写
2. -webkit-border-image 转换后的结果为 webkitBorderImage
示例1

输入     ‘font-Size’                                                     输出       fontSize

function cssStyle2DomStyle(sName) {
    var re = /-(\w)/g;
       //如果字符串以 - 开头则将 - 删掉
    if(sName[0] == '-')  {   sName = sName.replace('-', '');  }
       //将 “-字母”形式的字符串替换为 “大写字母”的形式
    sName = sName.replace(re, function($0, $1){
         return $1.toUpperCase();
    })  
      return sName;
}

4.颜色字符串转换

将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff
1. rgb 中每个 , 后面的空格数量不固定
2. 十六进制表达式使用六位小写字母
3. 如果输入不符合 rgb 格式,返回原始输入

输入                                                                               输出

'rgb(255, 255, 255)'                   #ffffff
function rgb2hex(sRGB) {
    var regexp=/rgb\((\d+),\s*(\d+),\s*(\d+)\)/;
    var ret=sRGB.match(regexp);
    if(!ret){
        return sRGB;
    }else{
        var str='#';
        for(var i=1;i<=3;i++){
            var m=parseInt(ret[i]);
            if(m<=255&&m>=0){
                str+=(m<16?'0'+m.toString(16):m.toString(16));
            }else{
                return sRGB;
            }
        }
        return str;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值