在数组元素的文本中找到后替换字符串的一部分

时间:2013-09-18 19:48:35

标签: javascript jquery

我希望将fText字符串值int b=3, a, c=10;更改为:

int _sc_b=3, _sc_a, _sc_c=10; 

使用数组元素中的文本。

我的代码:

var fText = "int b=3, a, c=10;";

sc_var_int_temp[0] = "a";
sc_var_int_temp[1] = "b";
sc_var_int_temp[2] = "c";


for( var vi=0; vi<sc_var_int_temp.length; vi++ ){
    //how would i do the replacing?
}//for

目标fText值为int _sc_b=3, _sc_a, _sc_c=10;

更新:尝试fText.replace(sc_var_int_temp[vi], "_sc_"+sc_var_int_temp[vi] );但挂起系统^^

尽可能地,我打算用循环替换

更新

我意识到,当fText为:

时,我接受的答案将无法正常工作
var fText = "int b=3,a ,c=10;";
//not really seperated by a single whitespace

2 个答案:

答案 0 :(得分:4)

它可能无法捕获每个边缘情况,但可以使用您的示例输入/输出:

for( var vi=0; vi<sc_var_int_temp.length; vi++ ){
    fText = fText.split(' '+ sc_var_int_temp[vi] ).join( " _sc_" + sc_var_int_temp[vi] );
}

http://jsfiddle.net/6YgHj/

或没有循环

fText = fText.split(' ').join(' _sc_');

http://jsfiddle.net/6YgHj/1/

所以你真正想要的是在声明变量的字符串中添加一个类似于变量名称的前缀。您需要一种方法来提取变量名称。我想不出在源语言中声明变量的所有可能方法。 "int a=1, float b,c"有效吗? "int a=10, b=2*a;"怎么样?

答案 1 :(得分:0)

尝试以下正则表达式:

var fText = "int b=3, a, c=10;";
fText = fText.replace(/(a|b|c)/g, "_sc_$1")

/(a|b|c)/g匹配a,b或c,并将它们分配为单独的匹配,因为parens ()。然后"_sc_$1"替换$1拉回实际匹配的字母。

请在此处查看工作小提琴:http://jsfiddle.net/Kc2NF/