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

Replace a part of the string after being found in the text of an array element

本文关键字:字符串 一部分 替换 数组元素 文本      更新时间:2023-09-26

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

它可能不会捕获每个边缘情况,但适用于您的示例输入/输出:

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;"怎么样?

尝试以下正则表达式:

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/