我需要将'_'的每个实例替换为一个空格,并将'#'的每个实例替换为无/空。
var string = '#Please send_an_information_pack_to_the_following_address:';
我试过了:
string.replace('#','').replace('_', ' ');
我真的不喜欢这样的链接命令。有没有另一种方法可以一次性完成?
我需要将'_'的每个实例替换为一个空格,并将'#'的每个实例替换为无/空。
var string = '#Please send_an_information_pack_to_the_following_address:';
我试过了:
string.replace('#','').replace('_', ' ');
我真的不喜欢这样的链接命令。有没有另一种方法可以一次性完成?
当前回答
这里有一个不需要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;
}
其他回答
这里是一个使用“reduce”多重替换函数的“安全HTML”函数(该函数将每个替换应用于整个字符串,因此替换之间的依赖关系非常重要)。
// Test:
document.write(SafeHTML('<div>\n\
x</div>'));
function SafeHTML(str)
{
const replacements = [
{'&':'&'},
{'<':'<'},
{'>':'>'},
{'"':'"'},
{"'":'''},
{'`':'`'},
{'\n':'<br>'},
{' ':' '}
];
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);
}
还可以将RegExp对象传递给replace方法,如
var regexUnderscore = new RegExp("_", "g"); //indicates global match
var regexHash = new RegExp("#", "g");
string.replace(regexHash, "").replace(regexUnderscore, " ");
Javascript RegExp
请尝试:
更换多管柱 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";
好运!
在正则表达式上指定/g (global)标志来替换所有匹配项,而不仅仅是第一个:
string.replace(/_/g, ' ').replace(/#/g, '')
要用一种东西替换一个字符,用另一种东西替换另一个字符,你真的不能避免需要两个单独的调用来替换。你可以把它抽象成一个函数,就像门把手做的那样,尽管我可能会让它把一个对象的旧/新作为键/值对,而不是一个平面数组。
你可以试试这个:
str.replace(/[.#]/g, 'replacechar');
这将用你的replacechar !