获取子字符串问题(js.或jquery)

Get substring issue (js.. or jquery)

本文关键字:jquery js 字符串 问题 获取      更新时间:2023-09-26

我做错了什么?

我需要在这里得到最后4个字符

<div class="test">11/16/2001</div>
<script>
var lastfour = $(".test");
lastfour.substr(6);
</script>

努力在这里度过新的一年。我知道我的语法很糟糕,但我只是在寻找最简单的解决方案。

谢谢!

$(".test");返回一个jquery对象,而不是字符串。您需要调用.text()来获取文本。

此外,您还有一个额外的)

此代码还假设只有一个元素具有您关心的test类。如果还有更多,请查看each

这是否只适用于像您的示例中那样的mm/dd/yyyy格式的日期?

在这种情况下,此解决方案(http://jsfiddle.net/TU4aF/)会更好。

var date = $(".test").text();
var splitDate = date.split('/');
var year = splitDate[2];

它可以处理个位数的月份和天数。

如果最后四个,最好的方法是使用负值,因此它将是(使用固定变量,如Sintheta所建议的):

<script>
  var lastfour = $(".test").text().substr(-4);
</script>

此外,您的脚本中还有额外的)

lastfour.substr(6));

编辑(为子孙后代):

James指出IE中存在一个错误,负值返回整个字符串。这不适用于IE9。但slice()函数在IE中也能正常工作,它也接受负值。

下面的示例使用以下字符串。我用了数字,所以很容易看出发生了什么。

var s="1234567890"

从第8个开始获取字符串中的所有字符(即start=7,因为它是从零开始的):

s.substr(7);//返回890

从字符串中获取前两个字符:

s.substr(0,2);//返回12

从字符串中获取最后两个字符:

s.substr(-2);//返回90

从第4个字符开始获取四个字符(即start=3):

s.substr(3,4);//return 4567

如果start+长度大于字符串中剩余的长度,则只包括字符串末尾的字符(显然没有其他内容可提取),因此生成的字符串可能不一定像您期望的那么长。下面的例子说明了这一点,其中传递的长度为20,但生成的字符串只有4个字符长:

s.substr(6,20);//return 7890

从末尾4开始获取两个字符:

s.substr(-4,2);//返回78

String.substring(开始,到)

String.substring()的工作方式与String.substr()略有不同,后者的开始和结束位置作为参数传递,而不是作为开始和长度传递。

试试这个

<div class="test">11/16/2001</div>    
<script>
     var lastfour = $(".test").text();
     lastfour.substr(-4);
</script>