【JavaScript使用技巧】三个截取字符串中的子串,你用的哪个

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

slice() 截取

说明

通过指定的开始和结束位置,提取字符串的某个部分,并以新的字符串返回被提取的部分。

语法
stringObject.slice(start, end)
参数说明

start(必需):规定从何处开始选取。

如果是负数,那么它规定从字符串尾部开始算起的位置。

end(可选):规定从何处结束选取,即结束处的字符下标。

如果没有指定该参数,那么截取的字符串包含从 start 到结束的所有字符。如果这个参数是负数,那么它规定的是从数组尾部开始算起的字符。

示例
var str = "0123456789";
str.slice(0,5); // 01234
str.slice(3); //3456789
str.slice(3,5); //34
str.slice(-3); //789

substring()截取

说明

提取字符串中介于两个指定下标之间的字符,返回一个新的字符串

语法
stringObject.substring(start, stop)
参数说明

start(必需):一个非负的整数,注意是非负的整数。

标识了要提取的子串的第一个字符在 stringObject 中的位置。

stop(可选):一个非负的整数,注意是非负的整数。

比要提取的子串的最后一个字符在 stringObject 中的位置多 1(至少为一个字符)。

var str = "0123456789";
str.substring(3,5); //34
str.substring(3); //3456789

注意:

如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。

如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。

如果 start 或 end 为负数,那么它将被替换为 0。

substr() 截取

说明

substr 方法用于返回一个从指定位置开始的指定长度的子字符串。这里注意第二个参数是长度,而不是结束的位置。

语法
stringObject.substr(start, length)
参数说明

start(必需):所需的子字符串的起始位置。

字符串中的第一个字符的索引为 0。

length(可选):在返回的子字符串中应包括的字符个数。

var str = "0123456789";
str.substr(3,5); //34567
str.substr(3); //3456789

注意:

如果 length 为 0 或负数,将返回一个空字符串

如果没有指定 length,则子字符串将延续到 stringObject 的最后

如果 start 或 length 为负数,那么它将被替换为 0

对比和记忆

其实我猜大多数pym都知道这个三个方法,但是这三个方法的区别总是有些把持不住的样子。

给一段代码,好对比。

var str = "0123456789";
str.slice(3,5); //34
str.substring(3,5); //34
str.substr(3); //3456789

slice和substring都有开始和结束的概念,所以在有开始和结束参数时,区别不大,substring不支持负数,这一边有别于slice,一般也是基于这一点来区分使用的。

substr只有开始和开始的数量,这种方式用的场景特定,区别也是最明显的,希望如果记不住前面两个,那就那这个孤儿收了吧。

感谢

万能的网络

以及勤劳的自己,个人博客GitHub测试GitHub

公众号-归子莫,小程序-小归博客

【JavaScript使用技巧】三个截取字符串中的子串,你用的哪个的更多相关文章

  1. java中subString、split、stringTokenizer三种截取字符串方法的性能比较(转)

    最近在阅读java.lang下的源码,读到String时,突然想起面试的时候曾经被人问过:都知道在大数据量情况下,使用String的split截取字符串效率很低,有想过用其他的方法替代吗?用什么替代? ...

  2. 怎么用JS截取字符串中第一个和第二个字母间的部分?

    一.JS中用正则判断字符串是否有匹配正则的字符串部分,格式如下: /[a-zA-Z](.*?)[a-zA-Z]/.test('1a123d45678901a2') “.test”前面的部分是正则表达式 ...

  3. [转]EXCEL截取字符串中某几位的函数——LeftMIDRight及Find函数的使用

    原文地址:http://blog.sina.com.cn/s/blog_3f136a180102ymq5.html EXCEL截取字符串中某几位的函数 ——Left MID Right及Find函数的 ...

  4. 【面试题】JS使用parseInt()、正则截取字符串中数字

    JS使用parseInt()和正则截取字符串中数字 点击打开视频讲解更加详细 parseInt() 函数 定义和用法 parseInt() 函数可解析一个字符串,并返回一个整数. 当参数 radix ...

  5. Excel中如何截取字符串中指定字符后的部分字符

    1.如何给某列属性为时间整体加一个时间值:      场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示 ...

  6. Android中如何截取字符串中某个字符之前或之后的字符串

    代码改变世界 Android中如何截取字符串中某个字符之前或之后的字符串 //截取#之前的字符串 String str = "sdfs#d"; str.substring(0, s ...

  7. java截取字符串中的最后几个字符

    Java中的String类提供了一个substring(int from, int to)方法用于截取字符串中位置为from到to-1位置的字符. 因为字符串的字符位置是从0开始的,而substrin ...

  8. Java中用正则表达式截取字符串中

    Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串.比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市.正则表达式为() A ".*?(?=\\()" ...

  9. C# - 怎么截取字符串中指定字符及其后面的字符

    方法1:去掉空格以及后面的字符   //怎么截取让date的值为"2011/12/9",即去掉空格以及后面的字符   string date = "2011/12/9 2 ...

随机推荐

  1. redis 5.0.12 install

    redis 5.0.12 install ## check directory ls -l /XXXXXXX ##create dir mkdir -p /XXXXXXX/dataredis mkdi ...

  2. 记一次Kafka服务器宕机的真实经历!!

    大家好,我是冰河~~ 估计节前前祭拜服务器不灵了,年后服务器总是或多或少的出现点问题.不知是人的问题,还是风水问题.昨天下班时,跟运维小伙伴交代了好几遍:如果使用Docker安装Kafka集群的话,也 ...

  3. JDK源码阅读(3):AbstractStringBuilder、StringBuffer、StringBuilder类阅读笔记

    AbstractStringBuilder abstract class AbstractStringBuilder implements Appendable, CharSequence{ ... ...

  4. pip 命令总结

    建议和 Conda 命令一起看,pip 和conda命令有点相似.<Conda 命令> 1 查看帮助文档 pip --help 使用该命令将告诉你 pip 的常用命令. 使用时,输入pip ...

  5. 题解 AVL 树

    link Description 给出一个 \(n\) 个点的 AVL 树,求保留 \(k\) 个点使得字典序最小. \(n\le 5\times 10^5\) Solution 因为我很 sb ,所 ...

  6. Mybatis 一级缓存 (20)

    Mybatis中的一级缓存和二级缓存(本博文只是针对一级缓存说明) 概述 ORM框架一般都会有缓存机制,做为其中一员的Mybatis也存在缓存.功能是用以提升查询的效率和服务给数据库带来压力.同样的M ...

  7. Java RMI学习与解读(一)

    Java RMI学习与解读(一) 写在前面 本文记录在心情美丽的一个晚上. 嗯.就是心情很美丽. 那为什么晚上还要学习呢? emm... 卷... 卷起来. 全文基本都是根据su18师傅和其他师傅的文 ...

  8. BUAA 2020 软件工程 结对项目作业

    Author: 17373051 郭骏 3.28添加:4.计算模块接口的设计与实现过程部分,PairCore实现的细节 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) ...

  9. 深入理解Linux C语言内存管理

    问题不能拖,我这就来学习一下吧,争取一次搞定. 在任何程序设计环境及语言中,内存管理都十分重要. 内存管理的基本概念 分析C语言内存的分布先从Linux下可执行的C程序入手.现在有一个简单的C源程序h ...

  10. Veritas Backup Exec™ 21.3 Multilingual (Windows)

    Backup Exec 21.3, Release date: 2021-09-06 请访问原文链接:https://sysin.org/blog/veritas-backup-exec-21-3/, ...