非常非常初级,如果不合适就道歉。
我试图用破折号替换字符串中的所有字母,如果代码中只有一个字符,但我的代码不起作用,但我的代码不会有效。我已尝试过一个for循环,但也没有工作。 我一直在阅读其他主题,例如:Other thread,但无法弄清楚我做错了什么,而且我已经读了一段时间了。 谁能帮助我?
到目前为止,这是我的代码:
function replaceLettersWithDashes(str) {
/* This function will receive a string with a mix of characters. It should return the string with all letters replaced by dashes ('-').
For example 'You like cake' should return '--- ---- ----', and 'Tree 4, 6, 8' should return '---- 4, 6, 8'.
*/
return str.replace(/^[a-zA-Z]+$/g , '-');
}
提前致谢。
答案 0 :(得分:5)
您可以搜索单个字母并将其替换为此正则表达式,该表达式会查找一个字母并用短划线替换每个字母。标志'g'
和'i'
用于全局搜索和不区分大小写的搜索。
/[a-z]/gi
如果您使用+
或*
作为量词,则会获得以下所有字母并将其替换为单个短划线,这是不需要的。
function replaceLettersWithDashes(str) {
return str.replace(/[a-z]/gi , '-');
}
console.log(replaceLettersWithDashes('You like cake'));
console.log(replaceLettersWithDashes('Tree 4, 6, 8'));

答案 1 :(得分:1)
使用此正则表达式/[a-zA-Z]/g
您的代码打印短划线的原因是您要用-
替换整个单词。 [a-zA-Z]+
表示带字母的单词。
在此正则表达式中/[a-zA-Z]/g
[a-zA-z]表示任何一个字母,g
(全局)表示搜索所有可能的匹配(不在第一个字母上停止)
str='You like cake';
console.log(str.replace(/[a-zA-Z]/g , '-'));

答案 2 :(得分:1)
使用这种正则表达式/\D/g
,
的模式
\D
表示“非数字”。它将为您提供非常紧凑的代码。
请参阅下面的代码段
function replaceLettersWithDashes(str) {
var newStr = str.replace(/\D/g, "-");
console.log(newStr);
return newStr;
};
replaceLettersWithDashes("abcdef100abcdi50");

但是,如果您只需要字符(允许空格和空格),那么请继续使用正则表达式模式,只需添加问题评论中所述的g
即可。 :d
答案 3 :(得分:1)
这是一个简单的例子!!!
<p id="input"></p>
<p id="demo"></p>
<script>
var str ='asdfdfgfdgdfg';
let res = str.replace(/[A-Za-z]?/g,'-');
document.getElementById("demo").innerHTML = res;
document.getElementById("input").innerHTML = str;
</script>
&#13;
答案 4 :(得分:0)
return str.replace(/\w/gi , '-')