1

我希望将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
4

2 回答 2

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;"

于 2013-09-18T20:02:24.407 回答
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 并将它们分配为单独的匹配项()。然后"_sc_$1"是替换,从而$1拉回实际匹配的字母。

在这里查看工作小提琴:http: //jsfiddle.net/Kc2NF/

于 2013-09-18T20:01:08.117 回答