我需要将'_'的每个实例替换为一个空格,并将'#'的每个实例替换为无/空。

var string = '#Please send_an_information_pack_to_the_following_address:';

我试过了:

string.replace('#','').replace('_', ' ');

我真的不喜欢这样的链接命令。有没有另一种方法可以一次性完成?


当前回答

或者选择对我来说很好 示例let sample_string = <strong>一些带有html标签的单词</strong> |。需要删除强标签和“|”文本。 代码如下:= sample_string.replace(/\|(.*)|<strong>|<\/strong>/g,"")

其他回答

我不知道这有多大帮助,但我想从我的字符串中删除<b>和</b>

所以我用了

mystring.replace('<b>',' ').replace('</b>','');

所以基本上,如果你想要减少有限数量的字符,不浪费时间,这将是有用的。

你也可以试试这个:

function replaceStr(str, find, replace) {
    for (var i = 0; i < find.length; i++) {
        str = str.replace(new RegExp(find[i], 'gi'), replace[i]);
    }
    return str;
}

var text = "#here_is_the_one#";
var find = ["#","_"];
var replace = ['',' '];
text = replaceStr(text, find, replace);
console.log(text);

Find指要查找的文本,replace指要替换的文本

这将取代不区分大小写的字符。否则,只需根据需要更改Regex标志。对于区分大小写的替换:

new RegExp(find[i], 'g')

第二次更新

我开发了以下功能用于生产,也许它可以帮助其他人。它基本上是原生的replaceAll Javascript函数的循环,它没有使用regex:

function replaceMultiple(text, characters){
  for (const [i, each] of characters.entries()) {
    const previousChar = Object.keys(each);
    const newChar = Object.values(each);

    text = text.replaceAll(previousChar, newChar);
  }  
  
return text
}

用法非常简单。下面是使用OP的例子的样子:


const text = '#Please send_an_information_pack_to_the_following_address:';
const characters = [
    {
    "#":""
    },
   {
    "_":" "
    },
]

const result = replaceMultiple(text, characters);

console.log(result); //'Please send an information pack to the following address:'

更新

现在可以在本地使用replaceAll。

过时的回答

下面是使用字符串原型的另一个版本。享受吧!

String.prototype.replaceAll = function(obj) {
    let finalString = '';
    let word = this;
    for (let each of word){
        for (const o in obj){
            const value = obj[o];
            if (each == o){
                each = value;
            }
        }
        finalString += each;
    }
    
    return finalString;
};

'abc'.replaceAll({'a':'x', 'b':'y'}); //"xyc"

请尝试:

更换多管柱 Var STR = "http://www.abc.xyz.com"; STR = STR .replace(/http:|www|.com/g, ");//str是"//.abc.xyz" 替换多字符 Var STR = "a.b.c.d,e,f,g,h"; STR = STR .replace(/[。) / g,”);//str是"abcdefgh";

好运!

对于什么都不替换,tckmn的答案是最好的。

如果你需要替换对应匹配的特定字符串,下面是Voicu和Christophe回答的一个变体,避免重复被匹配的内容,这样你就不必记得在两个地方添加新的匹配:

const replacements = {
  '’': "'",
  '“': '"',
  '”': '"',
  '—': '---',
  '–': '--',
};
const replacement_regex = new RegExp(Object
  .keys(replacements)
  // escape any regex literals found in the replacement keys:
  .map(e => e.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
  .join('|')
, 'g');
return text.replace(replacement_regex, e => replacements[e]);