Javascript 替换jquery中字符串中多个子字符串的多次出现

Javascript 替换jquery中字符串中多个子字符串的多次出现,javascript,jquery,arrays,string,replace,Javascript,Jquery,Arrays,String,Replace,我有一个小程序,它根据数组元素检查字符串中的字符序列,如果在数组项[]中找到一个序列,则执行以下操作。但是,对于我来说,使用下面的机制,这只适用于数组中的第一个实例匹配。我如何使这种情况多次发生 示例:terms=['hello','world','this','is','me'] 给程序的字符串是:hello这里是我 要求程序将在字符串中找到的与数组中任何一个单词相匹配的单词分别替换为红色和绿色,但是程序在找到第一个匹配项时停止,即当前编程系统的结果为: 'red here is me' 而

我有一个小程序,它根据数组元素检查字符串中的字符序列,如果在数组项[]中找到一个序列,则执行以下操作。但是,对于我来说,使用下面的机制,这只适用于数组中的第一个实例匹配。我如何使这种情况多次发生

示例:
terms=['hello','world','this','is','me']

给程序的字符串是:
hello这里是我

要求程序将在字符串中找到的与数组中任何一个单词相匹配的单词分别替换为红色和绿色,但是程序在找到第一个匹配项时停止,即当前编程系统的结果为:

'red here is me'
而不是

'red here green me'
如何更改以下功能以获得第二个结果

for (var i = 0; i < terms.length && !match; i++) {
    if (string.indexOf(terms[i]) > -1) {
        match = true;
        var newString = '';
        wrapper.css("background", "#a1e4ff");
        var matchString = string.substring(string.indexOf(terms[i]), (string.indexOf(terms[i]) + terms[i].length));
for(var i=0;i-1){
匹配=真;
var newString='';
css(“背景”,“#a1e4ff”);
var matchString=string.substring(string.indexOf(terms[i]),(string.indexOf(terms[i])+terms[i].length));
我不认为你理解我,我不关心css,我关心子字符串的替换

这是我目前的代码

function check(string) {
    var terms = ['one', 'two'];
    var match = false;

    for(var i=0;i<terms.length;i++) {

        if(string.indexOf(terms[i]) > -1) {
            match = true;
            var newString='';
            var matchString = string.substring(string.indexOf(terms[i]), (string.indexOf(terms[i])+terms[i].length));

            switch(matchString) {
                case 'one':
                newString = string.replace(matchString, "three");
                break;
              case 'two':
                newString = string.replace(matchString, "four");
              default:
                alert('no matches');
            }

            $("ul").append("<li>" + newString + "</li>");
        }
      }
    }
函数检查(字符串){
var术语=[‘一’、‘二’];
var匹配=假;
对于(变量i=0;i-1){
匹配=真;
var newString='';
var matchString=string.substring(string.indexOf(terms[i]),(string.indexOf(terms[i])+terms[i].length));
开关(匹配字符串){
案例一:
newString=string.replace(匹配字符串,“三”);
打破
案例二:
newString=string.replace(匹配字符串,“四”);
违约:
警报(“无匹配项”);
}
$(“ul”)。追加(“
  • ”+新闻字符串+”
  • ”; } } }
    检查('这是一个两个字符串的示例')

    目前,我的计划的结果如下: 这是一个two的three示例字符串

    我想修复我的程序以产生以下结果: 这是一个由四个组成的三个示例字符串使用带有替换功能的a,并在颜色之间交替:

    函数replaceWithColor(str,terms){
    var termsDict=术语减少(函数(d,t){
    d[t]=真;
    返回d;
    },Object.create(null));
    变量颜色=['红色','绿色'];
    var i=0;
    返回str.replace(/\w+/g,函数(t){
    返回项DICT[t]?颜色[i++%2]:t;
    });
    }
    var terms=['hello','world','is','me'];
    var str=“你好,这里是我”;
    var result=replaceWithColor(str,术语)
    console.log(结果);
    var terms=['hello','world','this','is','me'];
    功能检查(str){
    变量
    s=str.split(“”);
    out=[],
    红绿=[“红”,“绿”],
    rgcount=0;
    s、 forEach(函数(k,i){
    如果(术语索引of(k)>=0){
    var color=红绿色[rgcount];
    向外推(“”+颜色+“”);
    rgcount=(rgcount+1)%2;
    }否则,推(k);
    });
    document.write(out.join(“”)+'
    '); } 检查(‘你好,我在这里’); 检查(‘一、二、三、四、粉红色Yellow,还有这个,还有什么’); 选中(terms.join(“”));
    .red{
    颜色:红色
    }
    格林先生{
    颜色:绿色;
    
    } /代码>你是说它在红色/绿色之间交替?这不是那么容易,考虑<代码>术语= [代码] >代码> >代码> STR=“这个”
    。确实如此。将它们包装在空格中应该可以解决这个问题。你认为呢?我已经在努力更改数组中找到的第一个匹配项,但是如果有第二个匹配项,它就不起作用了。也许我可以以某种方式更改代码,使同一字符串循环多次?我已经更改了逻辑。找到一个单词,看看它是否在
    术语中,然后再替换它。我将创建一个术语词典,使其更具性能。