2012-02-16 17 views
0

我在做什麼錯?獲取子串問題(js ..或jquery)

我需要在這裏

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

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

拿到最後4個字符試圖在這裏得到了一年。我知道我的語法很糟糕,但我只是在尋找最簡單的解決方案。

謝謝!

回答

4

$(".test");返回一個jquery對象,而不是一個字符串。您需要撥打.text()以獲取文本。

此外,您還有一個額外的)

此代碼還假定只有一個元素具有您關心的test類。如果還有更多,請看each

1

如果過去四年,最好的辦法是使用負值,所以這將是(固定變量作爲Sinetheta建議):

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

也,你在你的腳本有額外的)

lastfour.substr(6)); 

編輯(爲了子孫後代):

在IE中有一個錯誤,James指出負值返回整個字符串的地方。這不適用於IE9。 但slice()函數也在IE中工作,它也接受負值。

+0

errrm好,這'警報(11年/16/2001'.substr(-4));'給了我2001,結果...... – Kokers 2012-02-16 20:36:56

+0

我想不串SUBSTR。我收回之前說過的話。 – 2012-02-16 20:40:26

+0

也許只是修復他的變量:'var lastfour = $(「。test」)。text()。substr(-4);' – Sinetheta 2012-02-16 20:40:46

1

這是否只適用於日期的mm/dd/yyyy格式,如你的例子?

在這種情況下,此解決方案(http://jsfiddle.net/TU4aF/)會更好。

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

它可以處理個位數月和日。

1

以下示例使用以下字符串。我使用數字,因此很容易看到發生了什麼。

var s = "1234567890";

獲取的所有字符從8字符串中(即開始= 7,因爲它基於的零):

s.substr(7); // returns 890

獲取字符串中的前兩個字符:

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

從字符串中獲取最後兩個字符:

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

從第四個開始獲取四個字符(即啓動= 3):

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

如果start +長度比什麼則僅剩餘字符的字符串到字符串的結尾包括(顯然沒有別的提取),這樣得到的字符串更大可能並不一定與您所期望的一樣長。這在下面的例子中,其中長度是通過20示出,但所得到的字符串是隻有4個字符長:

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

獲取兩個字符從端部開始4:

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

String.substring(開始,到)

String.substring()與String.substr()的作用略有不同,其中起始位置和位置作爲參數傳遞,而不是起始和長度。

0

試試這個

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