替换字符串jquery中的所有字符

时间:2017-11-27 11:14:53

标签: javascript jquery

如何使用*函数将replaceAll()替换为给定字符串中的所有字符?

var words = ['marvel','computer','regex','throne'];
var rand = words[Math.floor(Math.random() * words.length)];
//should replace all characters in the string with *
$('#value').text(rand).replaceAll(rand,'*');
.container{
   border: 1px solid black;
   padding: 5px;
   margin: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='container'>
  <input type='text' />
  <span id='value'></span>
  <hr />
  <button type='button' id='submit'>Submit</button>
</div>

我宁愿不去正规格路线,但我猜我可能不得不这样做。

我正在编写一个简单的 hangman 程序,以便用*个字符隐藏字符串。然后用户输入一个字符,如果正确,则将字符串中的字符重置回原始字符。

正则表达式非常适合这样的事情,我只是不熟悉它。

3 个答案:

答案 0 :(得分:2)

如果您不想使用正则表达式,可以使用split()将字符串转换为数组,然后使用map()根据条件修改每个元素。

&#13;
&#13;
let replaceAll = (str, chars = []) => {
  return str.split('')
  .map(c => c.trim() && !chars.includes(c) ? '*' : c)
  .join('');
}
  
console.log(replaceAll('lorem ipsum', ['l', 'm']))
console.log(replaceAll('123    lorem ips', ['2', 'i'] ))
&#13;
&#13;
&#13;

答案 1 :(得分:1)

这是达到你想要的一种方式

var words = ['marvel','computer','regex','throne'];
var rand = words[Math.floor(Math.random() * words.length)];
//should replace all characters in the string with *
var maskedRand = ''
for (var char in rand) {
  maskedRand += '*'
}
$('#value').text(maskedRand);
.container{
   border: 1px solid black;
   padding: 5px;
   margin: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='container'>
  <input type='text' />
  <span id='value'></span>
  <hr />
  <button type='button' id='submit'>Submit</button>
</div>

答案 2 :(得分:0)

我不知道表单正在做什么,或者您如何填充words。我提到这个的原因是,如果数组是通过javascript函数或jquery对象填充的,那么数组中可能会有很多不需要的条目。您可能希望更改以下代码以忽略这些不需要的条目。

此代码正在执行的操作是循环遍历words数组并替换每个字符(正则表达式/./g)并将其替换为星号(*)。

&#13;
&#13;
var words = ['marvel','computer','regex','throne'];
var rand = words[Math.floor(Math.random() * words.length)];
//should replace all characters in the string with *
for(var i in words) {
    words[i] = words[i].replace(/./g, '*');
}
console.log(words);
&#13;
.container{
   border: 1px solid black;
   padding: 5px;
   margin: 5px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='container'>
  <input type='text' />
  <span id='value'></span>
  <hr />
  <button type='button' id='submit'>Submit</button>
</div>
&#13;
&#13;
&#13;