用短划线替换字母

时间:2018-03-23 21:16:41

标签: javascript regex string replace

非常非常初级,如果不合适就道歉。

我试图用破折号替换字符串中的所有字母,如果代码中只有一个字符,但我的代码不起作用,但我的代码不会有效。我已尝试过一个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 , '-');


}

提前致谢。

5 个答案:

答案 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;
&#13;
&#13;

答案 4 :(得分:0)

return str.replace(/\w/gi , '-')