Javascript 删除字符串中的最后数字

Javascript 删除字符串中的最后数字,javascript,Javascript,我有一个字符串如下所示: [APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834 [APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC) 我想删除字符串末尾的数字,基本上是字符串末尾的16个数字。最后应该是这样的: [APPLE PIE] Sei Shoujo Senta

我有一个字符串如下所示:

[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834
[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)
我想删除字符串末尾的数字,基本上是字符串末尾的16个数字。最后应该是这样的:

[APPLE PIE] Sei Shoujo Sentai Lakers 3 Battle Team Lakers 3 (100% FULL-PIC)_20121104_032834
[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中删除字符串末尾的数字呢?

如果字符串末尾总是正好是16位,那么:

s = s.substr(0, s.length - 16);
否则,您可以使用regexp:

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

只要更改代码,根据字符串长度计算索引,下面的代码就可以做到这一点

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

使用
replace
和正则表达式代替
substr

str.replace(/_\d{8}_\d{6}/,'')
正在运行演示


MDN上的参考资料。

以下是一些解决方案:

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("");
}​
var str=“[APPLE PIE]Sei Shoujo Sentai Lakes 3战斗队Lakes 3(100%完整图片)_20121104_032834”;
//解决方案1
//丑陋,因为你不知道角色的数量
var n=str.substr(0,75);//请注意,这些变量与您的不同!
文件。写入(n);
文件。写(“
”); //解决方案2 //仅当字符串本身不包含下划线时才有效 var n2=str.split(“”)[0]; 文件。编写(n2); 文件。写(“
”); //解决方案3 //仅当最后数量的数字始终相同时才有效 var n3=反向(str); n3=n3.子段(16,n3.长度); n3=反向(n3); 文件编写(n3); 功能反转(s){ 返回s.split(“”).reverse().join(“”); }​

试试这个

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);
检查此功能

检查示例-


函数检查()
{
var theImg=“[APPLE PIE]Sei Shoujo Sentai Lakes 3战斗队Lakes 3(100%全图)_20121104_032834”;
var x=分户(“”);
警报(“+x[0]);
}

它删除最后的数字,这是您所需要的吗?

使用
切片
可以使用负索引


您希望删除此“_20121104_032834”或“_032834”@ameyarote:OP在示例中表示“16位”,因此它将是前者。(但长度不是固定的,正如最后一句所说。)@w3d:好的。。!请检查我在下面建议的答案,它准确地删除了所有最后的数字。(请检查并告知是否需要任何不同的东西),尽管OP声明“将有不同数量的字符”-因此并不总是需要删除16个字符。尽管这不一定是“在字符串末尾”。您将需要一个锚
$
来标记字符串的结尾。但是根据OP,要删除的字符串的长度是不同的。啊,抱歉,我以为OP的意思是前缀字符串是可变长度字符串@在这种情况下,ADC的建议会更好。