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的建议会更好。