2009-08-20 64 views
3

我有一個字符串「2500 - SomeValue」。如何在'SomeValue'中的'S'之前刪除所有內容?JavaScript子字符串幫助

var x = "2500 - SomeValue"; 
var y = x.substring(x.lastIndexOf(" - "), 
// this is where I'm stuck, I need the rest of the string starting from here. 

感謝您的任何幫助。

〜CK

回答

7

將3(「 - 」的長度)加到最後一個索引處,並放棄第二個參數。將一個參數傳遞給子字符串時的默認值是字符串末尾

var y = x.substring(x.lastIndexOf(" - ") + 3); 
0
x.substring(x.lastIndexOf(" - "),x.length-1); //corrected 
+0

這實際上會導致運行時錯誤,因爲x.length超過了字符串的末尾。我認爲你的意思是'x.length - 1'。 – Joel 2009-08-20 23:02:03

+0

正確 - 嘗試了一個快速的回答,但失敗了 – Andreas 2009-08-21 10:27:25

3

這只是:

var y = x.substring(x.lastIndexOf(" - ") + 3); 

當你忽略第二個參數,它只是給你的一切到字符串的結尾。

編輯:既然你想從以後的所有東西「 - 」我已經添加3到起點以跳過這些字符。

+1

在這個問題中,他要求從「S」開始的所有內容切出「 - 」部分。當然,該代碼與您擁有的一致。 – 2009-08-20 23:11:45

+0

好點。據此編輯。 – VoteyDisciple 2009-08-20 23:39:01

0

嘗試

var y = x.split(" ",2); 

那麼你就必須的子字符串數組。第三個y [2]將是你需要的。

+1

當你使用'split('',2)'時,你最終將得到一個最大2個元素的數組,如果有2個或更多的空格,剩下的將被扔掉...所以這不起作用對於上面的例子。你正在嘗試使用'String.split(...,maximum)',就好像它在Python中一樣明智地工作。不幸的是JavaScript不明智。 – bobince 2009-08-21 00:46:24

+0

另一種使用破碎分裂最大特徵的方法是,例如:「x.split(' - ').slice(1).join(' - ')」,以放回任何附加的' - '字符串。 – bobince 2009-08-21 00:48:58

0
var y = x.substring(0, x.lastIndexOf(' - ') + 3) 
0

var y = x.slice(x.lastIndexOf(「 - 」),x.length - 1);

這將返回值爲一個字符串,無論該值是多少或多長,它與數組無關。

+0

不允許-1等於x.length-1? – Jimmy 2009-08-20 22:59:31

+0

slice需要一個終端值。如果字符串的長度是可變的,那麼這就是你如何找到它的長度來進行靜態測量。值-1不起作用,因爲作爲索引,值-1返回undefined。在這種情況下,這可能會引發錯誤。 – 2009-08-20 23:22:31