2012-11-26 65 views
2

我有一個字符串,它看起來像這樣:刪除最後一個數字字符串

[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834 

我想在字符串,基本處於字符串的結尾的16個位數的末端,除去數字。最後,它應該是這樣的:

[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC) 

這是我的代碼,我已經寫到目前爲止

var str="[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834"; 
var n=str.substr(1,74); 
document.write(n); 

的問題是字符串將是不同的,所以每次都會有不同數目的字符。那麼我如何刪除JavaScript中字符串末尾的數字?

+0

要刪除這個 「_20121104_032834」 OR 「_032834」 –

+0

@ameyarote:該任擇議定書的國家 「16位」 的例子,所以這將是前者。 (但是長度不是固定的,正如最後一句所述)。 – MrWhite

+0

@ w3d:好的..!請檢查下面我建議的答案,確切刪除所有最後的數字。(請檢查並告訴是否需要任何不同的東西) –

回答

7

如果它始終是正好16位的字符串的結尾則:

s = s.substr(0, s.length - 16); 

否則,你可以使用正則表達式:

s = s.replace(/[_0-9]+$/, ''); 
+0

第一個代碼只返回數字部分,不是嗎? –

+0

@OnurTOPAL是的,出現了一個錯誤,編輯 – bjornd

+0

+1的正則表達式。 – MrWhite

1

只是改變你的代碼根據計算指數字符串長度下面的代碼應該做的伎倆。

myString.substr(0, myString.length - 16); 
+0

雖然OP聲明,「將有不同數量的字符」 - 所以它並不總是需要刪除的16個字符。 – MrWhite

2

相反的substr,使用replace和正則表達式:

str.replace(/_\d{8}_\d{6}/,'') 

運行演示here

參考MDN here

+0

雖然這不一定是「在字符串的末尾」。您將需要一個錨點'$'來標記字符串的末尾。 – MrWhite

1

這裏有幾個解決方案:

var str="[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834"; 

// Solution 1 
// Ugly, since you don't know the number of characters 
var n = str.substr(0, 75); // Take note these variables are different than yours! 
document.write(n); 
document.write("<br />"); 

// Solution 2 
// Only works when the string itself contains no underscores 
var n2 = str.split("_")[0]; 
document.write(n2); 
document.write("<br />"); 

// Solution 3 
// Only works if the last amount of numbers are always the same 
var n3 = reverse(str); 
n3 = n3.substr(16, n3.length); 
n3 = reverse(n3); 
document.write(n3); 

function reverse(s){ 
    return s.split("").reverse().join(""); 
}​ 

JSFiddle

0

試試這個

var str="[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834"; 
var find=str.indexOf('_'); 
find=find-1; 
var n=str.substr(1,find); 
document.write(n); 
0

檢查這項功能

檢查實例 - http://jsfiddle.net/QN68Q/1/

<!DOCTYPE html> 
<html> 
<body onload="check();"> 

<script> 
function check() 
{ 
var theImg= "[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834"; 

var x = theImg.split("_"); 
alert(""+x[0]); 
} 
</script> 
</body> 
</html> 

刪除它最後的數字,這是你需要什麼?

2

使用slice可以使用負指標。

http://jsfiddle.net/gRoberts/A5UaJ/2/

var str="[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834"; 
alert(str.slice(0, -16))​ 
+0

但根據OP,要刪除的字符串的長度會有所不同。 – MrWhite

+0

啊,道歉,我以爲OP意味着前綴字符串是可變長度的字符串。 @在這種情況下,ADC的建議會更好。 – Gavin

相關問題