我想转换这个字符串:
string with characters like áéíóú
到
#################################
此"parágrafo".replace(/\wW*/g, "#")
会返回"###á#####"
答案 0 :(得分:3)
一种选择是使用repeat()
let str = 'string with caracthers like áéíóú';
let result = "#".repeat(str.length);
console.log(result);
Doc:repeat()
答案 1 :(得分:1)
使用.repeat()
的其他答案可能是更好的方法。这个答案主要用于解释代码的错误以及如何正确完成代码。
\w
与重音字母不匹配,这就是á
在输出中结束的原因。但即使这不是一个问题,它也不会匹配单词之间的空格。
您可以使用.
,它匹配除换行符之外的任何字符。
console.log("string with caracthers like áéíóú`".replace(/./g, "#"));

如果您还想用#
替换换行符,请添加s
修饰符。
console.log(`string with caracthers like áéíóú
and also newlines`.replace(/./gs, "#"));

糟糕,这是ES2018中的一项新功能,尚未在所有浏览器中提供。您可以使用/.|\n.g
来获得更好的可移植性。
console.log(`string with caracthers like áéíóú
and also newlines`.replace(/.|\n/g, "#"));

答案 2 :(得分:0)
"#".repeat("string with characters".length)
无需更换。
答案 3 :(得分:0)
repeat()
无法在IE中使用,因此我建议循环到str
长度以获取值为#
的字符串。
let str = 'string with caracthers like áéíóú';
let result ='';
for(var i=0; i<str.length; i++){
result += '#';
}
console.log(result);
&#13;
答案 4 :(得分:0)
看起来你的正则表达式在某个地方丢失了几个字符(并获得了*
)。它应该是/[\w\W]/
而不是:
var str = "parágrafo".replace(/[\w\W]/g, "#");
console.log(str);