【问题标题】:Is there a way to replace all characters that isn't a certain character with already converting it to underscores有没有办法用已经将其转换为下划线来替换不是某个字符的所有字符
【发布时间】:2020-10-19 04:15:56
【问题描述】:

没错,我正在用 jQuery 做一个带有 html、CSS 和 JavaScript 的hangman 项目。

我所做的是将字符串转换为像这样的下划线

var hidden_word;

hidden_word = aWord.replace(/[a-z]/gi, ' _ ');
$("#word").html(hidden_word);

然后如果单击一个字母,它应该将相应的下划线更改为正确的字母。

这就是我用它所做的(它不起作用,因为它只是将它全部转换回来)

if(aWord.includes(guess)){
    for(var q=0; q<aWord.length; q++){
        if (aWord[q] == guess){ indices.push(q+1); counter++; 
            $("#word").html(aWord.replace(/Q/g, ' Q '));
        }
        
        console.log(counter);
    }

我做了一些研究,但没有真正找到任何东西。

任何想法,关于如何使它转换字母所在的那个?

【问题讨论】:

  • 如何做到这一点?
  • 我认为我需要以某种方式替换除某些内容之外的所有内容。不过不确定。

标签: javascript jquery replace


【解决方案1】:

一个简单的解决方案是将aWord 的字母映射到一个对象,例如aWord 等于字符串abc。 @ 987654324@,然后您可以遍历该对象,每种类型的用户键入内容然后返回其值,在返回之前您可以检查对象是否具有用户键入的字母,然后您可以更新对象的值,或者将当前值设置为相同键,所以当你再次返回时,这次 UI 将返回正确的结果,让我们举个例子:

const aWord = "abcdef"; // generated based on your logic
const mappings = {}; // initial empty object

aWord.split('').forEach((_, i) => mappings[aWord[i]] = '_'); // fill in the object with letters as keys and underscores as values by default

const guess = "f"; // coming from user

if (aWord.includes(guess)){ // if word has guessed letter, we update object
    mappings[guess] = guess;
}

// mappings now will be => {a: "_", b: "_", c: "_", d: "_", e: "_", f: "f"}
console.log(mappings);

【讨论】:

  • 我似乎无法让它工作。我做错了什么,我无法将手指放在什么 const mappings = {}; var sd; aWord.split('').forEach((_, i) =&gt; mappings[aWord[sd]] = '_'); for (let sd=0; sd &lt;= aWord.length; sd++) {if (mappings[sd]) {mappings[sd] = aWord[sd]; }} $("#Q").click(function(){$("#Q").css("visibility", "hidden");guess = "Q";if(aWord.includes(guess)){for(var q=0; q&lt;aWord.length; q++){if (aWord[q] == guess){ indices.push(q+1); counter++; $("#word").html(hidden_word.replace(/Q/g, ' Q ')); }console.log(counter);}
  • @Tortoise41 我重构了我的代码,希望你现在清楚了
  • 无论如何都可以完美地将映射显示为 HTML,例如当他们说 n 正确时,它会显示 n 在下划线的位置。
  • 您可以执行类似Object.values(mappings).join(' ') 的操作,这会将映射打印为_ _ _ _ _ f,并且每次发生事件时,假设用户这次输入b,结果将是_ b _ _ _ f 等等等等;)不要忘记将我的答案标记为正确。欢呼
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 2018-11-25
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 2019-08-15
  • 2012-06-08
相关资源
最近更新 更多