web前端面试题附答案040-请说说字符串的截取

        面试其实无非就那点东西,翻来覆去的,有的考你原理,有的考你基础知识熟不熟。而这道题就是考基础知识的。关于string的截取,招式有很多,也不好说哪种更优秀,但你却要知道几种。

        其实日常工作中知道那么一两种就可以了,但面试嘛,回答的越多越有效,得分就越高呗。

1、substring

        这个内置函数的解释是

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

substring() 方法返回的子串包括 开始 处的字符,但不包括 结束 处的字符。

意思就是'string'.substring(from, to)  中,from是必须的,to是不必须的

<script>
    var astr = 'abcdefg';
    var bbb = astr.substring(1, 3); // bc
    var ccc = astr.substring(0); // abcdefg
    var eee = astr.substring(-3); // abcdefg
    var fff = astr.substring(20); // ''
</script>

         面试题永远不会老老实实的考最基础的用法,如果考你基础用法,你做出来就入职了,你可能也干不长,他们就不需要有挑战的人出现。所以,我这里列举了一些不常用的场景,例如传入一个负数,那么substring就默认是从0开始截取,比如传的是一个超出字符串length范围的数字,那么就返回'' 空引号

        那么可能面试官还会问你,如果函数中传入了一个不是数字的参数会怎么样?

<script>
    var ggg = astr.substring(null); // abcdefg
    var hhh = astr.substring('我们'); // abcdefg
    var iii = astr.substring(1+1); // cdefg
</script>

        怎么样,如果下次让你面一个大厂的大佬,你也有的问了,如果substring传入一个字符串会怎么样?如果我的substring里传入计算表达式会怎么样?

2、subStr

        这个内置函数的解释是:

 substr() 方法可在字符串中抽取从 开始 下标开始的指定数目的字符。

‘string’.substr(from, length) ,这里from是必填的,length是非必填的,length未填写,表示从from下标开始,一直截取到末尾

<script>
    var bstr = 'abcdefg';
    var aaa = bstr.substr(0); // abcdefg
    var bbb = bstr.substr(-1, -1) // ''
    var ccc = bstr.substr('我们', 3); // abc
    var ddd = bstr.substr(0, 100); // abcdefg
</script>

        所以是不是可以再次不断尝试, 我的length传入负数会怎么样,如果我不按规矩办,from值我传个字符串会怎么样,如果我的length传一个超出字符串长度的又会怎么样,只有不断的举一反三,才能算是对一个知识点的熟练掌握。至于精通嘛,瞎扯,哪有的精通的人儿呢

3、slice

        其实这道题完全可以换个问法,比如你可以说一下字符串的substring  substr  slice的区别吗?而slice也是截取,但定义是这样的

slice(start, end) 方法可提取字符串的某个部分

        还是按照之前的逻辑,如果单纯的'string'.slice(1, 3) 这恐怕完全没有出面试题的意义,新浪的工程师们就喜欢出这类问题,对于字符串,数组的这些方法,反反复复的问你参数这么传,这么传会怎么怎么样。

<script>
            var str = "abcdefg";
            var aaa = str.slice(-1, 3);
            console.log(aaa); // 空
            var bbb = str.slice(-1);
            console.log(bbb); // g
            var ccc = str.slice(2, -2);
            console.log(ccc); // cde
            var ddd = str.slice(6, -5);
            console.log(ddd); // 空
            var eee = str.slice();
            console.log(eee); // abcdefg
</script>

        是不是已经发现了slice的一个特点,说好的from必传,不传也能返回全部;他的from必须在左,to必须在右,否则截取不出来,to参数如果传入负值,就是从后面开始截取

4、特别方法

        怎么叫特别方法呢,这些都是截取排在一起的,但是真实需求千差万别,很可能是一个字符串这里截取一点,那里截取一点,这就涉及到多种方法的组合。再比如我们用字符串的chrAt方法,也可以截取出单个字符,然后进行拼接,也是一种思路、

        面试最重要的是什么?其实回答问题本身都不是最重要的,最重要的是,做个选择题吧要不

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经海路大白狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值