问答详情
源自:7-11 提取指定数目的字符substr()

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>


提问者:有礼彬 2016-09-06 15:00

个回答

  • 野枫
    2016-09-06 15:50:03
    已采纳

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

  • 有礼彬
    2016-09-12 18:15:45

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


  • 名字都给你们起完了
    2016-09-12 17:34:37

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

  • qq_紫諾_03916894
    2016-09-06 15:44:07

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

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

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

  • Haiiz
    2016-09-06 15:29:22

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

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