在一个替换呼叫中替换多个字符

2020/10/09 11:21 · javascript ·  · 0评论

一个非常简单的小问题,但是我不太明白该怎么做。

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

var string = '#Please send_an_information_pack_to_the_following_address:';

我已经试过了:

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

我真的不喜欢这样的链接命令。还有另一种方法可以做到这一点吗?

使用OR运算符(|):

var str = '#this #is__ __#a test###__';
str.replace(/#|_/g,''); // result: "this is a test"

您还可以使用字符类:

str.replace(/[#_]/g,'');

小提琴

如果您想用一件事替换哈希值,而用另一件事替换下划线,则只需要链接即可。但是,您可以添加一个原型:

String.prototype.allReplace = function(obj) {
    var retStr = this;
    for (var x in obj) {
        retStr = retStr.replace(new RegExp(x, 'g'), obj[x]);
    }
    return retStr;
};

console.log('aabbaabbcc'.allReplace({'a': 'h', 'b': 'o'}));
// console.log 'hhoohhoocc';

为什么不连锁呢?我认为这没有错。

链接很酷,为什么不考虑它呢?

无论如何,这是一次替换中的另一种选择:

string.replace(/#|_/g,function(match) {return (match=="#")?"":" ";})

如果match ==“#”,替换将选择“”,否则将选择“”。

[更新]对于更通用的解决方案,您可以将替换字符串存储在一个对象中:

var replaceChars={ "#":"" , "_":" " };
string.replace(/#|_/g,function(match) {return replaceChars[match];})

如果要替换多个字符,则可以使用replaceString.prototype.replace()参数调用,该参数是针对每次匹配调用的函数。您所需要的只是一个对象,该对象表示将在该函数中使用的字符映射。

例如,如果你想a与更换xbycz,你可以这样做:

var chars = {'a':'x','b':'y','c':'z'};
var s = '234abc567bbbbac';
s = s.replace(/[abc]/g, m => chars[m]);
console.log(s);

输出234xyz567yyyyxz

/g在正则表达式上指定(全局)标志以替换所有匹配项,而不仅仅是第一个:

string.replace(/_/g, ' ').replace(/#/g, '')

要用一个东西替换一个字符,而用别的东西替换另一个字符,您真的无法避免需要两个单独的调用replace您可以像Doorknob一样将其抽象为一个函数,尽管我可能会让它以旧/新对象作为键/值对,而不是平面数组。

您也可以尝试以下方法:

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的文本和要替换为的文本

这将替换不区分大小写的字符。否则,只需根据需要更改正则表达式标志即可。例如:对于区分大小写的替换:

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

我不知道有多少,这将帮助,但我想删除<b>,并</b>从我的字符串

所以我用

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

因此,基本上,如果您希望减少有限数量的字符并且不浪费时间,这将很有用。

您可以尝试以下方法:

str.replace(/[.#]/g, 'replacechar');

这将用您的replacechar替换。,-和#!

这是没有RegEx的简单方法。
您可以根据需要原型化和/或缓存事物。

// Example: translate( 'faded', 'abcdef', '123456' ) returns '61454'
function translate( s, sFrom, sTo ){
    for ( var out = '', i = 0; i < s.length; i++ ){
        out += sTo.charAt( sFrom.indexOf( s.charAt(i) ));
    }
    return out;
}

请试试:

  • 替换多字符串

    var str = "http://www.abc.xyz.com";
    str = str.replace(/http:|www|.com/g, ''); //str is "//.abc.xyz"

  • 替换多字符

    var str = "a.b.c.d,e,f,g,h";
    str = str.replace(/[.,]/g, ''); //str is "abcdefgh";

祝好运!

您还可以将RegExp对象传递给replace方法,例如

var regexUnderscore = new RegExp("_", "g"); //indicates global match
var regexHash = new RegExp("#", "g");

string.replace(regexHash, "").replace(regexUnderscore, " ");

Javascript RegExp

yourstring ='#Please send_an_information_pack_to_the_following_address:';

用''替换'#'并用空格替换'_'

var newstring1 = yourstring.split('#').join('');
var newstring2 = newstring1.split('_').join(' ');

newstring2是您的结果

这是使用字符串原型的另一个版本。请享用!

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"
String.prototype.replaceAll=function(obj,keydata='key'){
 const keys=keydata.split('key');
return Object.entries(obj).reduce((a,[key,val])=> a.replace(new RegExp(`${keys[0]}${key}${keys[1]}`,'g'),val),this)
}

const data='hids dv sdc sd {yathin} {ok}'
console.log(data.replaceAll({yathin:12,ok:'hi'},'{key}'))

String.prototype.replaceAll = function(keydata,obj){const keys = keydata.split('key'); return Object.entries(obj).reduce((a,[key,val])=> a.replace(${keys[0]}${key}${keys[1]},val),this)}

const data ='hids dv sdc sd $ {yathin} $ {ok}'console.log(data.replaceAll('$ {key}',{yathin:12,ok:'hi'}))

这是一个使用“减少”多次替换功能的“安全HTML”功能(此功能将每次替换应用于整个字符串,因此替换之间的依赖性非常重要)。

// Test:
document.write(SafeHTML('<div>\n\
    x</div>'));

function SafeHTML(str)
    {
    const replacements = [
        {'&':'&amp;'},
        {'<':'&lt;'},
        {'>':'&gt;'},
        {'"':'&quot;'},
        {"'":'&apos;'},
        {'`':'&grave;'},
        {'\n':'<br>'},
        {' ':'&nbsp;'}
        ];
    return replaceManyStr(replacements,str);
    } // HTMLToSafeHTML

function replaceManyStr(replacements,str)
    {
    return replacements.reduce((accum,t) => accum.replace(new RegExp(Object.keys(t)[0],'g'),t[Object.keys(t)[0]]),str);
    }
本文地址:http://javascript.askforanswer.com/zaiyigetihuanhujiaozhongtihuanduogezifu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!