如何使用*
函数将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 程序,以便用*
个字符隐藏字符串。然后用户输入一个字符,如果正确,则将字符串中的字符重置回原始字符。
正则表达式非常适合这样的事情,我只是不熟悉它。
答案 0 :(得分:2)
如果您不想使用正则表达式,可以使用split()
将字符串转换为数组,然后使用map()
根据条件修改每个元素。
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;
答案 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
)并将其替换为星号(*
)。
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;