为了账号安全,请及时绑定邮箱和手机立即绑定

startPos为负数且绝对值大于字符串长度,为什么结果却是这样?(360浏览器的测试结果)

startPos为负数且绝对值大于字符串长度,为什么结果不是

startPos为负数且绝对值大于字符串长度,startPos为0。
结果却是:”o Worl“,为什么不是“Hello ”。


<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

<script type="text/javascript">

var mystr="Hello World!";

document.write(mystr.substr(6)          + "<br />");

document.write(mystr.substr(2,6)          + "<br />");

document.write( mystr.substr(0,6)  + "<br />"                     );

document.write(mystr.substr(-2,6)          + "<br />");

document.write(mystr.substr(-8,6)          + "<br />");


</script>

</head>

<body>

</body>

</html>


正在回答

5 回答

substr是从指定的起始位置截取指定长度,这个是从左往右截取的,只用考虑初始位置,-8的位置是o,然后考虑截取长度,往右截取6个字符,就是o Worl,不会因为你人为计数从最后一个数往左倒数而截取方向变成从右往左,所以不是Hello。

1 回复 有任何疑惑可以回复我~
#1

野枫

补充一点,截取时如果指定截取长度到达最后一个字符后则停止,比如截取位置是-1,截取长度是6,只会截取最后一个字符,不会继续“跑”到开始位置截取。
2016-09-06 回复 有任何疑惑可以回复我~
#2

有礼彬 提问者 回复 野枫

当,startPos为负数且绝对值大于字符串长度,startPos为0。怎么解释?
2016-09-06 回复 有任何疑惑可以回复我~
#3

慕村1994845 回复 有礼彬 提问者

楼上其实已经说了,比方数组长度为7,startPos为-8;那么我这样理解,从尾部开始往头部数,-1,-2,-3...当数到头部第一位时,动作会停止,然后取值首位,而首位的检索号就是0,那么此时startPos为0
2016-09-20 回复 有任何疑惑可以回复我~
#4

有礼彬 提问者

非常感谢!
2016-09-21 回复 有任何疑惑可以回复我~
查看1条回复

我现在已不纠结那个问题了


0 回复 有任何疑惑可以回复我~

没有一个人能解释你的问题 我也很想知道是为什么 关注~

0 回复 有任何疑惑可以回复我~

substr(<字符表达式>、<数值表达式1>) -8是从!往前面开始截取,6是取几位数

document.write(mystr.substr(-16,5) + "<br />");  //结果就是 hello

第七章还没有学不知道这样说对不对啊 ,如果说错了就是扰乱你的思路了

0 回复 有任何疑惑可以回复我~
#1

有礼彬 提问者

当,startPos为负数且绝对值大于字符串长度,startPos为0。怎么解释?
2016-09-06 回复 有任何疑惑可以回复我~

document.write(mystr.substr(-8,6)          + "<br />");从后面倒数8位  (!drlow o)就是到o哪里,然后就是o Worl;

-8只是说从后面数起来定位,但是截取的时候还是往前截取的,不是往后

0 回复 有任何疑惑可以回复我~
#1

有礼彬 提问者

当,startPos为负数且绝对值大于字符串长度,startPos为0。怎么解释?
2016-09-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

startPos为负数且绝对值大于字符串长度,为什么结果却是这样?(360浏览器的测试结果)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信