substing和slice的完整语义和区别

substring();

概述:

substring()返回字符串两个索引之间的值(或到字符串末尾)的字串;

语法:

 

str.substring(indexA, indexB)

 

参数:

indexA、indexB都是一个0到字符串长度之间的整数;

描述:

substring 提取从 indexA 到 indexB(不包括)之间的字符。特别地:

  • 如果 indexA 等于 indexBsubstring 返回一个空字符串。
  • 如果省略 indexBsubstring 提取字符一直到字符串末尾。
  • 如果任一参数小于 0 或为 NaN,则被当作 0。
  • 如果任一参数大于 stringName.length,则被当作 stringName.length

如果 indexA 大于 indexB,则 substring 的执行效果就像两个参数调换了一样。例如,str.substring(1, 0) == str.substring(0, 1)

示例

例子:使用 substring

下例使用 substring 输出字符串 "Mozilla" 中的字符:

// 假设 print 函数已被定义
var anyString = "Mozilla";

// 输出 "Moz"
console.log(anyString.substring(0,3));//从0到3位置构成的字符串,但是3位置不包含;
console.log(anyString.substring(3,0));//如果indexA>indexB,indexA和indexB交换// 输出 "Mozill"
console.log(anyString.substring(0,6));
console.log(anyString.substring(0));//从0到最后位置全部截取;
// 输出 "Mozilla"
console.log(anyString.substring(0,7));
console.log(anyString.substring(0,10));

console.log(anyString.substring());//没有参数就全部返回

slice();

概述

slice() 方法提取字符串中的一部分,并返回这个新的字符串。

语法

string.slice(i, j)

参数

i

从该索引(以 0 为基数)处开始提取原字符串中的字符。如果该参数为负数,则它表示从原字符串中的倒数第几个字符开始抽取, slice(-2)表示抽取了原字符串中的倒数第二个字符到最后一个字符(包含最后一个字符)

j

在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice会一直提取到字符串末尾。如果该参数为负数,则它表示在原字符串中的倒数第几个字符结束抽取.。slice(-2, -1) 表示抽取了原字符串中的倒数第二个字符到最后一个字符(不包含最后一个字符,也就是只有倒数第二个字符)。

描述

slice 不修改原字符串,只会返回一个包含了原字符串中部分字符的新字符串。

slice(1,4) 提取了原字符串中的第二个字符开始直到第四个字符的所有字符 (索引为 1, 2, 3的字符)。

str.slice(2, -1) 提取第三个字符到倒数第二个字符。

例子

例子: 使用 slice 创建一个新的字符串

// 假定存在一个 print 函数
var str1 = "The morning is upon us.";
var str2 = str1.slice(4, -2);
print(str2);//morning is upon u

下面的这几点和substring相同:
var bb="abc";
bb.slice(1);//bc 从1位置开始到末尾全部获取
bb.slice(0,1);//a 从0为位置开始到1位置(1位置包含)
bb.slice();//abc 没有参数则全部返回

两者之间的区别:

1、substring中的参数可以互换,而slice中却不可以,会自动认为字符串不存在;

var  aa="hello world";
aa.substring(11,6);//world
aa.slice(11,6);//"" 

2、substring中的参数不能为负值,而slice中的两个参数都可以为负值;

var  aa="hello world";
aa.substring(5,-1);//"hello"
这里的参数不能为负数,若为其中一个负数会自动转换为0,相当于aa.substring(5,0);然后参数又可以交换,最终变为aa.substring(0,5);
aa.substring(-1);//
"hello world"相当于aa.substring(0);
aa.slice(5,-1);//" worl" aa.slice(0,-1);//"hello worl" aa.slice(-5,-1);//"worl"
aa.slice(-6,0);//""

 

posted @ 2015-05-07 15:40  非我思彦  阅读(375)  评论(0编辑  收藏  举报