2012-06-08 88 views
11

比方說,我有一個這樣的字符串:如何從給定模式開始刪除字符串的結尾?

var str = "/abcd/efgh/ijkl/xxx-1/xxx-2"; 

如何,使用JavaScript和/或jQuery的,去除str部分開始xxx,直到的str結束了嗎?

+0

所以你只需要''xxx-1/xxx-2「'? –

+0

不,我想從我的字符串中刪除它,並得到我的新字符串沒有'xxx-1/xxx-2' – user765368

+0

@Derek:認爲OP想要:'「/ abcd/efgh/ijkl /」' – haylem

回答

22
str.substring(0, str.indexOf("xxx")); 
+2

注意:使用'str = str.substring(0,str.indexOf(「xxx」));'如果意圖是將修改後的值賦給相同的變量。如果'xxx'沒有出現在原始字符串中,這將產生一個空字符串。 – nnnnnn

1

這將採取一切從字符串的開始到xxx的開始。

str.substring(0,str.indexOf("xxx")); 
7

剛:

s.substring(0, s.indexOf("xxx")) 

一個更安全的版本,處理無效的輸入和缺乏匹配模式是:

var s = trump("/abcd/efgh/ijkl/xxx-1/xxx-2", "xxx"); 
+1

嗯,@WilliamVanRensselaer擊敗了我們所有的人,他配得上它:) – haylem

+0

我應該鍛鍊我的打字技巧,以便我可以打字得更快! :) –

+2

王牌應該修剪:D加一:D – Gogol

2

function trump(str, pattern) { 
    var trumped = ""; // default return for invalid string and pattern 

    if (str && str.length) { 
    trumped = str; 
    if (pattern && pattern.length) { 
     var idx = str.indexOf(pattern); 

     if (idx != -1) { 
     trumped = str.substring(0, idx); 
     } 
    } 
    } 
    return (trumped); 
} 

,你會跟調用

試試這個:

str.substring(0, str.indexOf("xxx")); 

indexOf會發現xxx的位置,substring將切出你想要的作品。

0

嘗試使用string.slice(start, end)

如果你知道你想從你的榜樣刪除,文字的確切數字:

var str = "/abcd/efgh/ijkl/xxx-1/xxx-2"; 
new_str = str.slice(0, -11); 

這將導致str_new == '/abcd/efgh/ijkl/'

爲什麼這是非常有用的: 如果'xxx'引用任何字符串(如OP所述),即:'abc','1k3'等,a nd你事先並不知道它們可能是什麼(即:不是常量),接受的答案以及其他大多數答案都不起作用。

相關問題