在IE和Firefox中都能工作的最干净的方法是什么?
我的字符串看起来像这个sometext-20202
现在sometext和破折号后面的整数可以有不同的长度。
我应该使用子字符串和索引还是有其他方法?
在IE和Firefox中都能工作的最干净的方法是什么?
我的字符串看起来像这个sometext-20202
现在sometext和破折号后面的整数可以有不同的长度。
我应该使用子字符串和索引还是有其他方法?
当前回答
使用格式为\w-\d+的正则表达式,其中\w代表单词,\d代表数字。开箱即用是行不通的,所以可以试一试。试试这个。
其他回答
var testStr = "sometext-20202"
var splitStr = testStr.substring(testStr.indexOf('-') + 1);
其他人都给出了一些非常合理的答案。我选择了另一个方向。不使用split, substring或indexOf。工作伟大的i.e.和firefox。可能网景也适用。
只有一个循环和两个如果。
function getAfterDash(str) {
var dashed = false;
var result = "";
for (var i = 0, len = str.length; i < len; i++) {
if (dashed) {
result = result + str[i];
}
if (str[i] === '-') {
dashed = true;
}
}
return result;
};
console.log(getAfterDash("adfjkl-o812347"));
我的解决方案是高性能的,可以处理边缘情况。
上述代码的目的是拖延工作,请不要实际使用它。
使用内置的javascript replace()函数和使用regex(/(.*)-/),你可以用空字符串("")替换破折号之前的子字符串:
"sometext-20202".replace(/(.*)-/,""); // result --> "20202"
AFAIK, Mozilla和IE都支持substring()和indexOf()。但是,请注意,某些浏览器的早期版本(特别是Netscape/Opera)可能不支持substr()。
你的文章表明你已经知道如何使用substring()和indexOf(),所以我不发布一个代码示例。
你可以使用分裂方法。如果你需要从特定的模式中获取字符串,你可以使用split with req。经验值:
Var string = "sometext-20202"; console.log (string.split (/-(.*)/)[ 1))