substring和substr有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了substring和substr有啥区别相关的知识,希望对你有一定的参考价值。

js有2个截取字符串的函数,其定义如下:
substr(start,length)
substring(start,end)
substr是从起始点截取某个长度的字符串
而substring是截取2个位置之间的字符串
用了这么久js,今天才算明白如何截取字符串,以前都稀里糊涂的用,没注意到有2个函数
昨天晚上在写一个js的时候,本来我是要用substring的结果,在ultraedit的提示功能下
我也没有看就按了enter,最后运行的本文来源:考试大网时候发现和我设想的有差别。一看代码发现我把substring
给写成了substr了,所以才会出错的!其实他们的区别也很见简单
String.substr(N1,N2) 这个就是我们常用的从指定的位置(N1)截取指定长度(N2)的字符串;
String.substring(N1,N2) 这个就是我们常用的从考试大论坛指定的位置(N1)到指定的位置(N2)的字符串;
举个例子:
alert("123456789".substr(2,5)) 它显示的是 "34567"
alert("123456789".substring(2,5)) 则显示的为 "345"
String.substr(N1,N2) 这个就是我们常用的从指定的位置(N1)截取指定长度(N2)的字符串;
String.substring(N1,N2) 这个就有点特别了,它是先从N1,N2里找出一个较小的值,然后从字符串的开始位置算起,截取较小值位置和较大值位置之间的字符串,截取出来的字符串的长度为较大值与较小值之间的差。
参考技术A 他们的区别是:
substring意思是子链。
substr指的是字符函数。

例句比较:
substring
1、This is the substring after the character? in the URL.
即URL中字符?之后的子字符串。
2、A substring is zero or more contiguous string length units of input string.

子字符串是输入字符串的零个或多个相邻字符串长度单元。。
3、In Figure 5, the substring of length 1 from the first byte of the string has been specified.
在图5中,已经指定字符串第一个字节的长度为1的子字符串。

substr
1、This explains the use of substr ( text, match [0], match [ 1]) in the last line of code.
这解释了最后一行代码中字符函数(text,match[0],match[1])的使用。
2、Length of a string variable: Input argument for the SUBSTR function, whichdetermines the desired length of the resulting string or output of the LENGTHfunction.

字符串变量的长度:字符函数的输入参数,决定了结果字符串的期望长度或LENGTH函数的输出。
3、User define function REGEXP_SUBSTR.

用户定义的函数REGEXP SUBSTR。

substr和substring之间的区别

substr 和 substring都是JS 截取字符串函数,两者用法很相近,下面是两者的语法很示例:

substr 方法

返回一个从指定位置开始的指定长度的子字符串。
stringvar.substr(start [, length ])

参数
stringvar
必选项。要提取子字符串的字符串文字或 String 对象。
start
必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。
length
可选项。在返回的子字符串中应包括的字符个数。

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

示例代码

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。

示例代码

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

 

【注】:应用substr和substring两个函数截取带有空格的字符串后的长度是每个空格算一个字符长度。例如:

        var a = "I am shi huan!"; a.substring(0, 5).length的值是5,而不是4,

        但alert(a.substring(0, 5));的值却是I am ,这样在做alert("I am" == a.substring(0, 5));的时

        候就是false了,alert("I am" == a.substring(0, 4));才是true。

以上是关于substring和substr有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

String.subString() 和 String.subSequence() 有啥区别

Spoj-DISUBSTR - Distinct Substrings~New Distinct Substrings SPOJ - SUBST1~(后缀数组求解子串个数)

SPOJ - SUBST1 D - New Distinct Substrings

substring和substr$.extend()$.fn.extend()(function($){….})(jQuery)的简易讲解

SPOJ SUBST1 - New Distinct Substrings(后缀数组[不相同的子串的个数])

SPOJ SUBST1 - New Distinct Substrings(后缀数组[不相同的子串的个数])