JS截取与分割字符串方法:substring、substr、slice的区别

[复制链接]
查看2118 | 回复13 | 2020-9-6 17:10:18 | 显示全部楼层 |阅读模式
这三个方法都是提取字符串里面子串的方法,虽然平时使用挺多,但是每次都要去看文档以防参数传递错误。下面对这三个方法做一个详细的区别。

substring

String.substring(x,y):
x:必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
y:可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置+ 1。

/2个参数的情况"abcdefg".substring(1,4); //"bcd"//1个参数的情况:返回开始位置到字符串的结尾"abcdefg".substring(1); //"bcdefg"//如果x=y:返回一个空串(即长度为 0 的字符串)"abcdefg".substring(1,1); //""//如果x>y:先交换这两个参数然后同第一种情况"abcdefg".substring(4,1); //"bcd"//如果x<0或y<0;会把小于0的参数当作0处理(理论上不接受负数);"abcdefg".substring(1,-4); 
=》"abcdefg".substring(1,0); 
=》"abcdefg".substring(0,1); //"a"

本文实例讲述了JS截取与分割字符串的常用方法。分享给大家供大家参考,具体如下:

JS截取字符串可使用 substring()或者slice()

函数: substring()
定义: substring(start,end)表示从start到end之间的字符串,包括start位置的字符但是不包括end位置的字符。
功能: 字符串截取,比如想从"MinidxSearchEngine"中得到"Minidx"就要用到substring(0,6)


例子:

var src="images/off_1.png";
alert(src.substring(7,10));
//弹出值为:off

函数:substr()

定义:substr(start,length)表示从start位置开始,截取length长度的字符串。

功能:字符串截取

例子:

var src="images/off_1.png";
alert(src.substr(7,3));
//弹出值为:off

函数:split()

功能:使用一个指定的分隔符把一个字符串分割存储到数组

例子:

str="jpg|bmp|gif|ico|png";
arr=theString.split("|");
//arr是一个包含字符值"jpg"、"bmp"、"gif"、"ico"和"png"的数组

函数:John()

功能:使用您选择的分隔符将一个数组合并为一个字符串

例子:

var delimitedString=myArray.join(delimiter);
var myList=new Array("jpg","bmp","gif","ico","png");
var portableList=myList.join("|");
//结果是jpg|bmp|gif|ico|png

函数:indexOf()

功能:返回字符串中匹配子串的第一个字符的下标

var myString="JavaScript";
var w=myString.indexOf("v");w will be 2
var x=myString.indexOf("S");x will be 4
var y=myString.indexOf("Script");y will also be 4
var z=myString.indexOf("key");z will be -1

函数:lastIndexOf()

定义:lastIndexOf()方法返回从右向左出现某个字符或字符串的首个字符索引值(与indexOf相反)

功能:返回字符串索引值

var src="images/off_1.png";
alert(src.lastIndexOf('/'));
alert(src.lastIndexOf('g'));
//弹出值依次为:6,15

补充:substr 和 substring方法的区别

substr 方法

返回一个从指定位置开始的指定长度的子字符串。

stringvar.substr(start [, length ])

参数

stringvar 必选项。要提取子字符串的字符串文字或 String 对象。

start 必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。

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

说明 如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到 stringvar 的最后。

示例 下面的示例演示了substr 方法的用法。

function SubstrDemo(){
  var s, ss;        // 声明变量。
  var s = "The rain in Spain falls mainly in the plain.";
  ss = s.substr(12, 5); // 获取子字符串。
  return(ss);        // 返回 "Spain"。
}

substring 方法

返回位于 String 对象中指定位置的子字符串。

strVariable.substring(start, end)
"String Literal".substring(start, end)

参数

start 指明子字符串的起始位置,该索引从 0 开始起算。

end 指明子字符串的结束位置,该索引从 0 开始起算。

说明 substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。

substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点。例如, strvar.substring(0, 3) 和 strvar.substring(3, 0) 将返回相同的子字符串。

如果 start 或 end 为 NaN 或者负数,那么将其替换为0。

子字符串的长度等于 start 和 end 之差的绝对值。例如,在 strvar.substring(0, 3) 和 strvar.substring(3, 0) 返回的子字符串的的长度是 3。

示例

下面的示例演示了 substring 方法的用法。

function SubstringDemo(){
  var ss; // 声明变量。
  var s = "The rain in Spain falls mainly in the plain..";
  ss = s.substring(12, 17); // 取子字符串。
  return(ss); // 返回子字符串。
}

slice

String.slice(x,y):
x:必需。要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
y:可选。要抽取的片段的结尾的下标+1。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。

//2个参数的情况"abcdefg".slice(1,4); //"bcd"//1个参数的情况:返回开始位置到字符串的结尾"abcdefg".slice(1); //"bcdefg"//如果x=y:返回一个空串(即长度为 0 的字符串)"abcdefg".slice(1,1); //""//如果x>y:返回一个空串(即长度为 0 的字符串)"abcdefg".slice(4,1); //""//如果x<0:从字符串的尾部开始算起的位置,-1 指字符串的最后一个字符,-2 指倒数第二个字符//如果y<0:从字符串的尾部开始算起的位置,-1 指字符串的最后一个字符,-2 指倒数第二个字符"abcdefg".slice(-1,8);//g"abcdefg".slice(1,-4); //bc12345678910111213141516
*因为slice不能像substring一样当x<y的时候交换,所以必须y的位置在X之后,否则返回空串。1

substr

String.substr(x,y):
x:必需。必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
y:可选。子串中的字符长度。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。

//2个参数的情况"abcdefg".substr(1,4); //"bcde"//1个参数的情况:返回开始位置到字符串的结尾"abcdefg".substr(1); //"bcdefg"//如果x<0;从字符串的尾部开始算起的位置。-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。"abcdefg".substr(-1);//g "abcdefg".substr(-1,1);//g123456789
重要事项:ECMAscript 没有对该方法进行标准化,因此反对使用它。

重要事项:在 IE 4 中,参数 start 的值无效。在这个 BUG 中,start 规定的是第 0 个字符的位置。在之后的版本中,此 BUG 已被修正。123

总结

三个方法的第一个参数都是开始的位置,substring和slice的第二个参数是结束的位置(不包括该位置),slice和substr可以接受负值但是substr第二个参数是长度。

那么问题来了,怎么获取一个字符串的最后一个字符呢?

"abcdefg".substring(length-1);//g "abcdefg".slice(-1);//g "abcdefg".substr(-1);//g"abcdefg".charAt(length-1);//g 1234

  • 微信
  • 分享
  • 相关标签:javascript substring 字符串
  • 本文原创发布爱上源码网,转载请注明出处,感谢您的尊重!
    • 上一篇:浅谈2018年后端技术趋势
    • 下一篇:2018最全的js刷新当前页面的代码示例

    相关文章

    相关视频

    • 谷歌在妇女节发布Android P首个预览版
    • php循环结构
    • php数据加密相关介绍详解
    • 你不知道的PHP里10个非常有用的函数
    • JS截取与分割字符串方法:substring、su...
    • 编写第一个 JavaScript 程序
    • JavaScript 放在哪里?
    • JavaScript基本语法
    • JavaScript字符串
    • JavaScript数组
    本文有爱上源码下载完入驻作者发布,如果对您版权造成侵害,可以联系本站站长管理进行维权删除,本站收到维权24小时内进行处理,谢谢您关注23ym.cn! 本站分享大量程序员技术文章以及对编程开发的初级入门教程,包括图文讲解笔记和高清视频下载~
    回复

    使用道具 举报

    小玛哥1 | 2021-10-30 06:27:10 | 显示全部楼层
    加油!悟空源码,继续努力!支持你!
    回复

    使用道具 举报

    教风三应博 | 2021-11-20 23:52:34 | 显示全部楼层
    祝愿悟空源码越办越好!
    回复

    使用道具 举报

    haiyuezhihun | 2021-12-17 04:04:34 | 显示全部楼层
    感谢悟空源码分享精品资源!
    回复

    使用道具 举报

    123457489 | 2022-4-17 02:19:50 | 显示全部楼层
    支持悟空源码,越来越好
    回复

    使用道具 举报

    静254 | 2022-6-1 17:41:08 | 显示全部楼层
    这个资源都有真不错
    回复

    使用道具 举报

    很不错的资源站
    回复

    使用道具 举报

    工兵班长纬 | 2022-6-3 14:38:37 | 显示全部楼层
    悟空源码资源不错。粉了
    回复

    使用道具 举报

    都市夜归人PLA | 2022-8-5 20:12:59 | 显示全部楼层
    我是来白嫖悟空源码的积分的!!!!!
    回复

    使用道具 举报

    lkbt123 | 2022-12-17 15:15:29 | 显示全部楼层
    这个站很好,资源多,教程全
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则