javascript中String类的subString()方法和slice()方法

在该书2.8.4节中讲到String类中的subString()方法和slice()方法,其用法和返回结果都基本相同,如下示例:


代码如下:

var strObj = new String("hello world");
alert(strObj.slice(3));   // 输出结果:"ol world"
alert(strObj.subString(3));   // 输出结果:"ol world"
alert(strObj.slice(3, 7)); // 输出结果:"lo w"
alert(strObj.subString(3,7)); // 输出结果:"lo w"

由以上代码的输出结果可已看出,slice()方法和subString()方调用方法法和输出结果完全一样,这两种方法返回的都是要处理的字符串的子串,都接受一个或两个参数,第一个参数是要获取的子串的起始位置,第二个参数是要获取子串的终止位置,如果第二个参数省略终止位置就默认为字符串的长度,且两个方法都不改变String对象自身的值。

为什么有两个功能完全相同的方法呢?事实上,这两个方法并不完全相同,不过只在参数为负值时,他们处理参数的方式稍有不同。

对于负数参数,slice()方法会用字符串的长度加上参数,subString()方法将其作为0处理,例如:


代码如下:

var strObj = new String("hello world");
alert(strObj.slice(-3));      // 输出结果:"rld"
alert(strObj.subString(-3));    // 输出结果:"hello world"
alert(strObj.slice(3,-4));     // 输出结果:"lo w"
alert(strObj.subString(3,-4))   // 输出结果:"hel"

这样既可看到slice()和subString()方法的主要不同。当只有参数-3时,slice()返回"rld",subString()则返回"hello world"。这是因为对于字符串"hello world",slice(-3)将被转换成slice(8),而subString(-3)则转化成subString(0)。同样,使用3和-4差别也是很明显。slice()方法将被转换成slice(3,7),与前面的例子相同,返回"lo w"。而subString()方法则将这个两个参数解释为subString(0,3),实际上是:subString(0,3),因为subString()总是把较小的参数作为起始位,较大的数字最为终止位。

(0)

相关推荐

  • 深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性

    在截取字符串时常常会用到substr().substring().slice()方法,有时混淆之间的用法,故总结下. 阅读目录 •slice() •substring() •substr() •总结 slice() 定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置.第二个参数表示子字符串的结束位置(不包括结束位置的那个字符),如果没有传递第二个参数,则将字符串的长度作为结束位置. 1.传递参数为正值情况: var str ="helloWorld"; // 一个参数,则将字

  • javascript中substring()、substr()、slice()的区别

    stringObject.substring(start,stop) 用于提取字符串中介于两个指定下标之间的字符. start必需.一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置. stop可选.一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1.如果省略该参数,那么返回的子串会一直到字符串的结尾. start从0开始 到stop(不包含stop)结束 不接受负的参数. stringObject.substr(start,

  • js substr、substring和slice使用说明小记

    关于substr.substring和slice方法区别的文章,网上搜到了许多,文章内容也基本一致.而后,我将其中一篇文章中的代码挪到本地进行了测试,发现测试结果和原文中的有些出入. 我更相信自己亲自验证过后的代码,随后小记下来,供以后查阅. substr 复制代码 代码如下: document.write("|" + str.substr(0,5) + "|" + "<br />"); document.write("|&

  • js字符串截取函数substr substring slice使用对比

    常用三个的字符串截取函数:substr substring slice,调用方式如下 复制代码 代码如下: stringObject.slice(start,end) stringObject.substr(start,length) stringObject.substring(start,end) 最明显的是substr,第二个参数是length,是截取长度,其他两个函数的第二个参数都是末尾字符的下标(这里并不包括该下标的字符,只截取到该字符的前一个字符) slice跟substring比,

  • JavaScript截取字符串的Slice、Substring、Substr函数详解和比较

    在JavaScript中,提取子字符串主要是通过 Slice.Substring.Substr 三个方法之一. 复制代码 代码如下: // slice // 语法: string.slice(start [, stop])"Good news, everyone!".slice(5,9); // 'news' // substring // 语法: string.substring(indexA [, indexB])"Good news, everyone!".s

  • javascript中substr,substring,slice.splice的区别说明

    substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符. stringObject.substr(start,length);start必须,length可选. start 是截取的开始位置的下标,从0开始算起,必须是数字.可以是负数,-1是倒数第一个字符,-2是倒数第二个字符,以此类推. length 是要截取的字符的长度,必须是数字.如果未指定,则从start位置处开始截取到字符串结尾. substr 指定的是字符串的开始下标跟截取长度,所以可以替代substring

  • javascript中slice(),splice(),split(),substring(),substr()使用方法

    1.slice(): Array和String对象都有 在Array中  slice(i,[j]) i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个元素 j为结束的索引值,缺省时则获取从i到末尾的所有元素 参数返回: 返回索引值从i到j的数组,原数组不改变 在String中 slice(i,[j]) 参数说明: i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个字符 j为结束的索引值,缺省时则获取从i到末尾的所有字符 2.splice() 存在Array中   

  • javascript中String类的subString()方法和slice()方法

    在该书2.8.4节中讲到String类中的subString()方法和slice()方法,其用法和返回结果都基本相同,如下示例: 复制代码 代码如下: var strObj = new String("hello world"); alert(strObj.slice(3)); // 输出结果:"ol world" alert(strObj.subString(3)); // 输出结果:"ol world" alert(strObj.slice(

  • 浅谈StringBuilder类的capacity()方法和length()方法的一些小坑

    今天在做项目的过程中遇见一个StringBuilder.delete()删除得不到自己期望结果问题,一个截取字符串的问题,总得不到自己所期望的答案: 问题如下: stringBuilder.delete(stringBuilder.capacity() - 5, stringBuilder.capacity()); 此句代码要么报错,要么多删,要么少删,也有时候正确.也有时候得不到自己所想要的字符串: 简单的测试capacity()方法和length()方法的区别如下: StringBuilde

  • 也说JavaScript中String类的replace函数

    对回调函数的参数说明也很准确: 第一个参数是匹配到的字符串,最后一个是原字符串,倒数第二个参数是匹配到的字符串的在原字符串索引的起始位. 但我很好奇,第二到倒数第三之间的参数又是些什么呢?其实,W3school已经给出了答案: 复制代码 代码如下: replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串.其语法为: stringObject.replace(regexp/substr,replacement) replacement 可以是字符串,也可以

  • 详解Java8新特性之interface中的static方法和default方法

    为什么要单独写个Java8新特性,一个原因是我目前所在的公司用的是jdk8,并且框架中用了大量的Java8的新特性,如上篇文章写到的stream方法进行过滤map集合.stream方法就是接口Collection中的default方法.所以准备专门写写关于java8新特性的文章,虽然现在10已经发布了.但还是要认真的去了解下新版本的变化. static方法 java8中为接口新增了一项功能:定义一个或者更多个静态方法.用法和普通的static方法一样. 代码示例 public interface

  • JPA findById方法和getOne方法的区别说明

    目录 findById方法和getOne方法区别 getOne()方法是JpaRepository接口中定义的 再看findById()方法 spring-data-jpa中findById()的使用 findById方法和getOne方法区别 Jpa基础的CRUD方法继承自接口CrudRepository<T, ID>,包含以下方法: <S extends T> S save(S entity); <S extends T> Iterable<S> sav

  •  javascript数组中的slice方法和join​​方法

    目录 一.slice​​方法 1编辑器部分 2代码部分 3运行结果 二.join​​方法 1编辑器 2代码部分 3运行结果 前言: 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说slice​​和join​​方法不多说把代码编辑器打开​​ 一.slice​​方法 1编辑器部分 2代码部分 <html lang="en">   <head>     <meta charset="UTF-8" />     <

  • javascript数组中的concat方法和splice方法

    目录 一.concat方法 1直接vs打开 2代码块 3运行结果 二.splice方法 1代码部分 2运行结果 前言: 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说concat和splice方法的使用​​不多说把代码编辑器打开​​ 一.concat方法 1直接vs打开 2代码块 //功能:合并数组,可以合并一个或多个数组,会返回合并数组之后的数据,不会改变原来的数组:   const geyao = ['歌谣']   const fuzhu=["很强"]    

  • javascript数组中的reduce方法和pop方法

    目录 一.reduce方法 1直接vs打开 2代码部分 3运行结果 二.pop方 1直接vs打开 2代码部分 3运行结果 前言: 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说foreach和pop方法的使用​​不多说把代码编辑器打开​​ 一.reduce方法 1直接vs打开 2代码部分 var geyao=[1,3,5]     let sum = arr.reduce(function(prev, cur, index, arr) {     console.log(pr

  •  javascript学数组中的foreach方法和some方法

    目录 一.foreach方法 1直接vs打开 2代码部分 二.some方法 1直接vs打开 2代码部分 3总结 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说foreach和some的使用​​不多说把代码编辑器打开​​ 一.foreach方法 1直接vs打开 2代码部分 var geyao = ['歌谣', '很帅', '很强']   geyao.forEach((currentValue, index, arr, thisValue) => {     console.lo

  • javascript数组中的map方法和filter方法

    目录 一.map方法 1编辑器 2代码部分 3运行结果 二.filter方法 1编辑器 2代码 3运行结果 一.map方法 1编辑器 编辑器搞出来 一起研究研究数组中的map方法: 2代码部分 var geyao=['歌谣',"很帅","很强"]     geyao.map((currentValue,index,arr,thisValue)=>{         console.log(currentValue,"currentValue"

随机推荐