转载地址:https://www.cnblogs.com/echolun/p/7646025.html

那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”;
var a = "get-element-by-id";
function change(obj){
  //先将字符串按照“-”进行切割为数组
  var arr = obj.split("-");
  for(var i=;i<arr.length;i++){
    //由于get不需要转大写,所以从下标1开始,对第一位字母转大写,并拼接后面的小写字母
    arr[i] = arr[i].charAt().toUpperCase()+arr[i].substring();
  }
  //对改造完毕的数组元素进行无缝拼接
  console.log(arr.join(""));
}
//调用完成
change(a);

这里substring(1)的意思就是从下标1开始一直到字符串结尾处。但是参考写法提供的此处代码是substr(1,arr[i].length-1)

好吧,我承认虽然知道substring和substr都是对字符串进行截取操作,但两者之间的细化区别确实比较模糊,那么这里除了这两个小兄弟,也带上slice与splice就做个使用汇总吧。

一、关于substring()

substring(start,stop)表示返回从start开始到stop处之间的新字符串,其长度为stop减 start。包含start,但不包含stop,且不修改原字符串。这一点与slice的含头不含尾相近。例如:


var str = "";
console.log(str.substring(,))//"1234" length为5-1
console.log(str.substring(,),str)//"012345678" "0123456789"

其中start是必填项,stop为选填项,如果stop不填,那表示从start截取到字符串结尾,例如:


var str = "";
console.log(str.substring())//"123456789"

如果 start比stop大,那么方法在执行前会先交换这两个参数。例如:


var str = "";
console.log(str.substring(,))//"4567"

如果 start与stop相等,那么会返回一个空的字符串。例如:


var str = "";
console.log(str.substring(,))//""

如果 start或stop为负数,那么方法在执行前会先将负数变为0。例如:


var str = "";
console.log(str.substring(-,))//"012345"
console.log(str.substring(,-))//"01"
console.log(str.substring(-,-))//""

二、关于substr()

substr(start,length)表示返回从start开始包含length长度的新字符串,包含start,且不修改原字符串,与substring相比,第二个参数由代表结束的下标stop变成了规定新字符串长度的length,例如:


var str = "";
console.log(str.substr(,))//"12345" length为5
console.log(str.substr(,),str)//"234567" "0123456789"

其中start是必填项,length为选填项,如果length不填,那表示从start截取到字符串结尾,例如:


var str = "";
console.log(str.substr())//"123456789"

如果start为负数,那么start=str.length+start,例如:


var str = "";
console.log(str.substr(-))//"9"
console.log(str.substr(-,))//"456"

如果length为负数或者0,那么返回空字符串,例如:


var str = "";
console.log(str.substr(,))//""
console.log(str.substr(-,-))//""
console.log(str.substr(-,))//""

三、关于slice()

首先要说的是,slice可操作数组和字符串,但substring和substr只能操作字符串,splice只能操作数组。

slice(start,stop)表示截取从下标start 到下标stop(不包括该元素)的之间的元素,并返回新数组/新字符串,并不修改原数组/原字符串,这点上面说了,与substring很相似。例如:


var str = "";
arr = [,,,,,,,,,];
console.log(str.slice(,))//"12345"
console.log(arr.slice(,))//[1,2,3,4,5]

其中start是必填项,stop为选填项,如果stop不填,那表示从start截取到数组结尾/字符串结尾,例如:


var str = "";
arr = [,,,,,,,,,];
console.log(str.slice())//"123456789"
console.log(arr.slice())//[1,2,3,4,5,6,7,8,9]

如果 start比stop大(不会互换),或start与stop相等,则截取的为空,例如:


var str = "";
arr = [,,,,,,,,,];
console.log(str.slice(,))//""
console.log(arr.slice(,))//[]
console.log(str.slice(,))//""
console.log(arr.slice(,))//[]

需要特别注意的是,如果 start或者stop为负数,那么负数的选项从数组尾部开始算起的位置,最后一个数字为-1,倒数第二个数字为-2,依次类推。例如:


var str = "";
console.log(str.slice(,-))//"678"
console.log(str.slice(-,-))//"45678"
console.log(str.slice(-,))//"4567"

三、关于splice()

还是再强调一遍,slice可操作字符串和数组,但是splice不能操作字符串,会报错。

splice(start,length,items)表示从下标start处截取length长度(与substr有点像)的元素后,在start处为原数组添加items,并返回被截取的新数组,splice会直接修改原数组,例如:


var arr = [,,,,,,,,,];
console.log(arr.splice(,,,,))//[1,2,3]
console.log(arr);//[0,2,3,4,4,5,6,7,8,9] 原数组被截取走了1,2,3,并加入了2,3,4

其中start和length为必填项,items为选填项,如果length为0或者负数,则返回空数组(这里与substr相似),例如:


var arr = [,,,,,,,,,];
console.log(arr.splice(,,,,))//[]
console.log(arr);//[0,2,3,4,1,2,3,4,5,6,7,8,9] 直接在原数组下标0处并加入了2,3,4

var arr = [,,,,,,,,,];
console.log(arr.splice(,-,,,))//[]
console.log(arr);//[0,2,3,4,1,2,3,4,5,6,7,8,9] 直接在原数组下标0处并加入了2,3,4

如果start为负数,则原理和slice负数从右往左截取,最后一位数字为-1,倒数第二位为-2,依次类推,例如:


var arr = [,,,,,,,,,];
console.log(arr.splice(-,,,,))//[9]
console.log(arr);//[0,1,2,3,4,5,6,7,8,2,3,4] 从右往左截取1位,也就是9,并加入2,3,4

 

(转)substring和substr以及slice和splice的用法和区别的更多相关文章

  1. 【JS点滴】substring和substr以及slice和splice的用法和区别。

    那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”: var a = "get-el ...

  2. javascript字符串截取的substring、substr和slice

    本文详细的介绍了javascript中substring().substr()和slice()三个JS字符串截取的方法,substring()方法用于提取字符串中介于两个指定下标之间的字符.subst ...

  3. javascript中substring()、substr()、slice()的区别

    在js字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧. ...

  4. substring()、 substr() 、slice()的区别:

    stringObject.substring(start,stop) 用于提取字符串中介于两个指定下标之间的字符.start必需.一个非负的整数,规定要提取的子串的第一个字符在 stringObjec ...

  5. substr和substring,slice和splice的区别,js字符串截取和数组截取

    本文参考了文章:https://blog.csdn.net/kenberkeley/article/details/50983734 博主已经总结得很好了,看完之后也能明白,不过还是觉得要自己动手敲一 ...

  6. substring和substr,slice和splice

    substring 和 substr 这二货都是针对字符串而言的,且都是返回一个副本,而不是在原字符串上直接操作. 上代码: var str = '0123456789'; console.log( ...

  7. JS中数组和字符串具有的方法,以及substring,substr和slice的用法与区别

     String 对象属性 属性 描述 constructor 对创建该对象的函数的引用 length 字符串的长度 prototype 允许您向对象添加属性和方法 String 对象方法 方法 描述 ...

  8. JavaScript中,提取子字符串方法:Slice、Substring、Substr的比较。

    在JavaScript中,提取子字符串主要是通过 Slice.Substring.Substr 三个方法之一. // slice // 语法: string.slice(beginSlice [, e ...

  9. js字符串截取函数slice()、substring()、substr()

    摘要 在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与 ...

随机推荐

  1. Linux命令(十九) 查看系统负载 uptime

    一.命令介绍 Linux 系统中 uptime 命令主要用于获取主机运行时长和查询Linux系统负载等信息. uptime 命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行时 ...

  2. appium获取Toast内容的方法

    做自动化测试的时候,可能需要根据弹出的Toast提示来做下一步判断.这里记录一下获取Toast内容的方法,同时巩固一下显示等待的方法之一WebDriverWait. from selenium.web ...

  3. SVN Update Error: Please execute the 'Cleanup' command

    尝试用下面两种方法 svn clean up 中有一个选项break lock勾选上 把对应的文件来里的.svn里面的lock文件删除. svn local delete, incoming dele ...

  4. 【转】fiddler抓包时出现了tunnel to ......443 解密HTTPS数据

    转: 1.在抓取https的数据包时,fiddler会话栏目会显示“Tunnel to….443”的信息,这个是什么原因呢? connect表示https的握手(也就是认证信息,只要是https就要进 ...

  5. 学习6__STM32--SPI外设之中断收发---

    <目标> STM32双机 SPI中断收发通信 <描述> # STM32双机配置为一主一从模式 # 采用主机中断发送,从机中断接收 # 收发机制采用不间断收发(发送为空就发送,接 ...

  6. Android Service总结05 之IntentService

    Android Service总结05 之IntentService   版本 版本说明 发布时间 发布人 V1.0 添加了IntentService的介绍和示例 2013-03-17 Skywang ...

  7. HDU 1611 敌兵布阵 / HRBUST 1794 敌兵布阵(线段树)

    HDU 1611 敌兵布阵 / HRBUST 1794 敌兵布阵(线段树) Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A ...

  8. (转)eclipse 报错 :The method list(String, Object[]) is ambiguous for the type BaseHibernateDao

    背景:在开发过程中,经常遇到各种各样的编译问题,不断的总结,才能更好的提高效率. 描述 [报错] :The method list(String, Object[]) is ambiguous for ...

  9. kubernetes配置secret拉取私仓镜像

    2017.05.10 19:48* 字数 390 阅读 5216评论 0喜欢 8 对于公司内部的项目, 我们不可能使用公有开放的镜像仓库, 一般情况可能会花钱买docker私仓服务, 或者说自己在服务 ...

  10. linux服务器安装mysql并配置外网访问

    linux服务器安装mysql并配置外网访问 更新系统,如果不运行该命令,直接安装mysql,会出现"有几个软件包无法下载 sudo apt-get update 安装mysql sudo ...