2016-11-22 55 views
1

我想分割字符串的特定部分,并用新值替换它。注册前分割并替换字符串javascript/jquery

实施例:var _string = "split and replace @123/0 and test @456/1 and so on..."

从上面的字符串我需要@ 123.00/0来替换@ 123/0和456 @/0 @ 456.00/0。

最终输出:"split and replace @123.00/0 and test @456.00/1 and so on..."

我正在寻找一个更通用的方法,因为有可能是@ val的n个/在一个字符串。我无法替换字符串的特定部分。

这是我的尝试:

var _string = "split and replace @123/0 and test @456/1 and so on..."; 
var regex = /\$[^\@]*\/0/g; 
var match = _string.match(regex); 

for(var i=0; i<match.length; i++){ 
    if(match[i].indexOf("@") > 0){ 
    // do replace of string... 
    } 
} 

回答

1

使用String#replace方法有一个回调函数。

var _string = "split and replace @123/0 and test @456/1 and so on..."; 
 

 
console.log(
 
    _string.replace(/@(\d+)\/(\d)\b/g, function(_, m1, m2) { 
 
    return '@' + m1 + '.00/' + m2; 
 
    }) 
 
)


或者,您可以在String#replace方法提供string as parameter option避免回调。

var _string = "split and replace @123/0 and test @456/1 and so on..."; 
 

 
console.log(
 
    _string.replace(/@(\d+)\/(\d)\b/g, '@$1.00/$2') 
 
)

3

可以单独使用正则表达式正确使用组捕获与replace()实现这一目标。试试这个:

var _string = "split and replace @123/0 and test @456/1 and so on..."; 
 
_string = _string.replace(/(@\d{3})\/(\d)/g, "$1.00/$2"); 
 
console.log(_string);

-1
var _string = "split and replace @123/0 and test @456/1 and so on...".replace("@123/0", "@123.00/0").replace("@456/1", "@456.00/0"); 

试试这个

+1

由于有机磷农药提到这个需要是通用的,我相信整个的一点是,替代值不能硬编码 –