从左边替换字符串,直到Javascript中第一个出现的字符串

时间:2014-06-15 00:54:19

标签: javascript replace

我试图找出如何替换示例:

sw1_code1_number1_jpg - > code1_number1_jpg
hon2_noncode_number2_jpg - > noncode_number2_jpg
ccc3_etccode_number3_jpg - > etccode_number3_jpg
ddd4_varcode_number4_jpg - > varcode_number4_jpg

所以结果都是第一个_之后的字符串 如果它没有找到任何_那么什么都不做。

我知道如何查找和替换字符串,str.replace,indexof,lastindexof,但不知道如何删除第一个找到的事件。

谢谢

3 个答案:

答案 0 :(得分:1)

replace方法与正则表达式一起使用:

"sw1_code1_number1_jpg".replace(/^.*?_/, "");

答案 1 :(得分:1)

您可以采取以下几种方法:

var str = 'sw1_code1_number1_jpg';
var arr = str.split('_');
arr.shift();
var newSfr = arr.join('_');

或者您可以使用切片或替换:

var str = 'sw1_code1_number1_jpg';
var newStr = str.slice(str.indexOf('_')+1);

或者

var newStr = 'sw1_code1_number1_jpg'.replace(/^[^_]+_/,'');

答案 2 :(得分:1)

您可以拆分字符串并获得slice

var str = 'sw1_code1_number1_jpg';
var finalStr = str.split('_').slice(1).join('_') || str;

如果原始字符串不包含下划线,则返回原始字符串。


更新更简单的slice(仍适用于不包含下划线的字符串)

var str = 'sw1_code1_number1_jpg';
var finalStr = str.slice(str.indexOf('_') + 1);

这个适用于所有情况,因为当没有找到下划线时,返回-1,当我们向索引添加1时,我们称str.slice(0)等于str。