slice(start[,end])方法需要提供至少一个整数参数,作用是返回从start的位置开始到end位置的字符子串。当参数start为负数的时候他将从字符串尾部开始计算,当end没有指定时,end即为字符串的结尾。如果为负数呢,他也要从字符串尾部开始计算。所以当我们需要一个字符串的之后3个字符时只需slice(-3);由此可见,合理的使用负数让我们的程序变得简单。但是在此之前,请确保自己了解了他的作用。
据我所知的编程语言中,有很大一部分的substring方法设计为substring(beginposition,length),而在JavaScript中正好也有这么一个方法,可惜真正与之对应的是substr方法。

substr(pos[,length])方法中,如果pos为负数,则与slice的负数解释相同,length省略时与slice的end省略也相同。

到了substring方法,substring(from[,to]);从定义上就可以看到,后一个参数是一个位置,而非长度,因此他更像slice,但是与之有一点重要的区别,那就是substring方法不包含to位置。即是一个半开半闭区间。另一个区别是substring不支持负向位置,如果第一个参数为负数,那么就是从位置0开始。后一个位置如果是负数,则返回空串,如果第二个参数小于第一个参数,那么同样返回空串,但是如果相等呢,还是空串,因为这是一个半开半闭区间[from,to)。

slice,substr和substring方法的区别的更多相关文章

  1. JavaScript进阶(七)JS截取字符串substr 和 substring方法的区别

    JS截取字符串substr 和 substring方法的区别 substr方法 返回一个从指定位置开始的指定长度的子字符串. stringvar.substr(start [, length ]) 参 ...

  2. JS截取字符串substr 和 substring方法的区别

    substr 方法 返回一个从指定位置开始的指定长度的子字符串. stringvar.substr(start [, length ]) 参数 stringvar 必选项.要提取子字符串的字符串文字或 ...

  3. js里slice,substr和substring的区别

    概要: string.slice(start, end)提取一个字符串 string.substring(start, end)提取一个字符串,end不支持负数 string.substr(start ...

  4. 字符串和数组中split().toString(),join(),splice(),slice(),substr()和substring()

    <!Doctype html> <head> <mate charset="utf-8"> <title>string change ...

  5. js中slice(),splice(),split(),substring(),substr()的使用方法和区别

    1.slice(): Array和String对象都有 在Array中  slice(i,[j]) i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个元素j为结束的索引值,缺省时则获取 ...

  6. javascript 中slice,substr,substring方法的对比

    实际开发过程中,字符串是一种最常用的一种数据类型,而在程序中对字符串的操作也是十分繁琐,javascript中就提供了很多字符串相关的方法,然而由于方法过多,很多方法功能有交叉,参数有雷同,容易使用混 ...

  7. 如何使用slice,substr代替substring(原创)

    //写这个是为了加深对substring和slice的理解 substring: 任何一个参数小于0,都会被替换成0.两个参数,最小值会被当做start,最大值当做end. 参数 描述 start 必 ...

  8. substr和substring之间的区别

    substr 和 substring都是JS 截取字符串函数,两者用法很相近,下面是两者的语法很示例: substr 方法 返回一个从指定位置开始的指定长度的子字符串.stringvar.substr ...

  9. JDK6与JDK7中String类subString()方法的区别

    1.subString()方法的作用 subString(int beginIndex, int endIndex)方法的返回的是以beginIndex开始到 endIndex-1结束的某个调用字符串 ...

随机推荐

  1. 5月15日上课笔记-js中 location对象的属性、document对象、js内置对象、Date事件对象、

    location的属性: host: 返回当前主机名和端口号 定时函数: setTimeout( ) setInterval() 二.document对象 getElementById(); 根据ID ...

  2. web前端 ajax加载动态生成复选框demo

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. ORACLE删除字段(set unused的用法)

    一.问题 现场有一张大数据量的分区表,数据量在10G以上.因某种原因需要删除其中的某些字段.如果直接用 alter table1 drop (column1,column2); 或者alter tab ...

  4. 查询oracle安装过补丁没有

    [oracle@root ~]$ opatch lsinventoryInvoking OPatch 10.2.0.1.0 Oracle interim Patch Installer version ...

  5. springcloud(二) eureka的使用

    上一节讲到order微服务是通过rest调用user微服务的地址.但是,user微服务的地址是写死的, 如果user微服务集群的话,那么order微服务该如何调用呢?这个时候注册中心该上场了 演示eu ...

  6. 根据不同分辨率载入相应CSS样式表

    index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http:// ...

  7. 关于windows系统里locale、code page、ANSI编码的问题

    最近把公司代码库里的代码同步下来之后编译了下,竟然出问题.问下同事说代码库肯定没问题,而我啥也没改,那到底那里出问题了呢? VS2018报的错误是:error RC2001: newline in c ...

  8. 部署ASP.net MVC程序到IIS

    转:http://www.cnblogs.com/piyeyong/archive/2012/08/15/2640004.html 在网上找到一个table,列举了不同的操作系统对应的IIS版本以及配 ...

  9. leetcode503

    public class Solution { public int[] NextGreaterElements(int[] nums) { int n = nums.Length; int[] ne ...

  10. leetcode575

    public class Solution { public int DistributeCandies(int[] candies) { var dic = new Dictionary<in ...