替换字符串中的几个不同元素并将其返回

时间:2017-01-27 12:01:15

标签: javascript jquery

我有一个字符串,我想要改变一些单词。 我写下一个功能。如果要在我的字符串中单独更改单词,则此工作正常。但如果这个词多于一个,它只会最后改变。

import { Component } from '@angular/core';
@Component({
    selector: 'my-app',
    template: 
    <kendo-maskedtextbox
    name="value1"
    [(ngModel)]="value"
    [mask]="mask"></kendo-maskedtextbox>
})
export class AppComponent {
    public value: string;
    public mask: string;
    public maskValidation: boolean = true;
ngOnInit(){
    this.mask = "99 999";
    }
}

});

1 个答案:

答案 0 :(得分:0)

该功能不仅仅改变最后一个字。问题是每次更换单词时都会替换#main-arr__last中的html。

这是一个更好的解决方案:

$(document).ready(function() {
    var sometext = $('#main-arr').text();
    sometext = replaceAll(sometext, ' you ', ' error! ');
    sometext = replaceAll(sometext, ' he ', ' error! ');
    sometext = replaceAll(sometext, ' she ', ' error! ');

    var someHtml = toHtml(sometext, 'red');

    $('#main-arr__last').html(someHtml);
});

function replaceAll(str, search, replacement){
    return str.replace(new RegExp(search, 'g'), replacement);
}

function toHtml(str, clazz){
    return replaceAll(str, 'error!', '<span class="' + clazz + '">error!</span>');
}

首先我们实现一个function replaceAll来替换文本中所有出现的单词,然后我们将所有单词的文本,你,他和她,在我们的情况下,替换为错误! / p>

然后我们实施了function toHtml以涉及所有'错误!'带有确定类的跨度中的单词作为参数传递。