Javascript检测字符串字节长度
2010-09-14 13:27:10 来源:WEB开发网核心提示:先来几句题外话,今天面试百度公司web前端研发部的职位,Javascript检测字符串字节长度,整个面试持续了一个小时,面试结束的时候,在面试的时候,我承认自己的确认为用正则表达式去检测在复杂度上会胜于for,我心情格外地好,虽然有部分问题还是回答不上来或者回答得不好
先来几句题外话。今天面试百度公司web前端研发部的职位,整个面试持续了一个小时。面试结束的时候,我心情格外地好,虽然有部分问题还是回答不上来或者回答得不好,但面试官是一个很好的人,面试就像在谈心,我抒发了许多压在心中很久的想法,所以面试结束后心情格外地舒畅^_^
有一道题今天没回答好,给我的印象也特别深:用Javascript检测一个字符串的字节长度。
当然,首先必须弄清楚‘字节长度’的含义。字符串有一个length属性,可以检测该字符串的长度,但是这里所说的长度是‘字符长度’。而‘字节长度’,呵呵,比如说吧,中文字符占用2个字节(与编码有关),所以,字节长度!= 字符长度^_^
我在考试的时候一般都用惯性思维(所以每次竞赛的时候都不能拿到好成绩^_^),于是马上就想到给它一个for循环,然后判断每一个字符的编码,但是我没有马上回答。面试官见我好像不敢回答,就主动地提示说可不可以用for循环,我当然是肯定了一下啦。但是我不马上回答说用for循环,是因为我清楚这是一般人的思维,百度公司哟,不可能简单地考一个for循环的啦。果然不出我所料,在我肯定了之后,面试官进一步问我,有没有其他更好的方法,用for循环似乎复杂度高了些。
于是,我苦思冥想,绞尽脑汁,最后害怕时间拖拉得太长就放弃了。面试官真是个好人,在我放弃的时候他没有不了了之,还提示说能不能用正则表达式,呀,我恍然大悟啊!我花了那么长时间去学正则表达式,真正要用到的时候竟然忽略了它,罪过啊!
好吧,在面试的时候,我承认自己的确认为用正则表达式去检测在复杂度上会胜于for。
但是,我想说的是但是……