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

时间:2012-02-16 20:28:40

标签: javascript jquery substring

我做错了什么?

我需要在这里获取最后4个字符

<div class="test">11/16/2001</div>

<script>
var lastfour = $(".test");
lastfour.substr(6);
</script>

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

谢谢!

5 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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

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

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

lastfour.substr(6));

编辑(为后代):

IE中有一个错误,詹姆斯指出哪里负值返回整个字符串。这不适用于IE9。 但是slice()函数也适用于IE,它也接受负值。

答案 2 :(得分:1)

这是否仅适用于mm / dd / yyyy格式的日期,如示例所示?

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

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

它可以处理个位数月和日。

答案 3 :(得分:1)

以下示例使用以下字符串。我使用了数字,因此很容易看到发生了什么。

var s = "1234567890";

从8日获取字符串中的所有字符(即start = 7,因为它基于零):

s.substr(7); // returns 890

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

s.substr(0, 2); // returns 12

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

s.substr(-2); // returns 90

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

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

如果start + length大于字符串中剩余的内容,则只包含字符串末尾的字符(显然没有其他内容可以提取),因此生成的字符串可能不是必须和你期待的一样长。下面的示例说明了这一点,其中传递的长度为20,但结果字符串的长度仅为4个字符:

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

从头到尾获得两个从4开始的字符:

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

String.substring(start,to)

String.substring()与String.substr()的工作方式略有不同,其中start和to位置作为参数而不是start和length传递。

答案 4 :(得分:0)

试试这个

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