【问题标题】:How can I find all of the spaces in a sentence and replace ignore them?如何找到句子中的所有空格并替换忽略它们?
【发布时间】:2016-05-19 00:42:23
【问题描述】:

我正在开发一个 JavaScript Hangman 游戏,我需要打印出与随机选择的单词长度相同数量的破折号。我已经这样做了,但它也会为句子中的空白打印一个破折号,那么我怎样才能忽略这些空格,只为句子中的字母打印一个破折号呢?任何帮助表示感谢。

这是打印破折号的代码

for(var i = 0; i < sayings[randomSaying].length; i++)
{
   progress.innerHTML += "-";
}

随机变量

var sayings = [
    "cash on the nail",
    "charley horse",
    "foul play",
    "bury the hatchet",
    "hands down",
    "if the cap fits",
    "mumbo jumbo",
    "see red",
    "stone the crows",
    "thick and thin",
]
sayings.toString();
var randomSaying = Math.floor(Math.random()*sayings.length);

【问题讨论】:

  • 随便选一个词还是一句俗语?
  • 问题表明研究工作严重不足。这不是编码服务,您应该尝试自己研究基础知识

标签: javascript html string


【解决方案1】:

你不需要忽略空格,只需替换字母

progress.innerHTML = sayings[randomSaying].replace(/[a-z]+/g, "-");

一行代码,全部在一行,比循环更高效;)

【讨论】:

  • /\S+/g/[^ ]+/g 将替换任何非空格字符。或者 /\w+/g 如果您只期望字母数字的说法,则可以使用。
  • 谢谢您的回答!
  • @4castle 是对的...但是由于您的代码仅显示 a-z 非大写字母,因此我只是将 a-z 放入正则表达式中 :)。您可以随时根据自己的需要进行调整。
  • @4castle 你有没有玩过刽子手,你应该填写除了字母以外的任何东西?
  • 我刚刚注意到+ 正在用一个破折号- 替换每个完整的单词,而不是替换每个单独的字母。删除+
【解决方案2】:

for 循环中使用if 语句。另外,不要使用innerHTML +=,因为它会导致浏览器不得不一遍又一遍地重新解析 DOM。改为这样做:

var hiddenSaying = "";
for(var i = 0; i < sayings[randomSaying].length; i++) {
    if (sayings[randomSaying].charAt(i) === ' ')
        hiddenSaying += " ";
    else
        hiddenSaying += "-";
}
progress.innerHTML = hiddenSaying;

【讨论】:

  • 你是对的,这只是一个意见 :)... 将删除评论。就个人而言,我更喜欢编写更少的代码来实现结果......对此感到抱歉
【解决方案3】:

不能肯定,但我认为你应该看看这个:

function randomSaying(sayingsArray){
  var p = sayingsArray[Math.floor(Math.random()*(sayingsArray.length+1))];
  var d = p.replace(/\s/g, '').replace(/./g, '&#8208;');
  return {phrase:p, dashes:d};
}
var obj = randomSaying(sayings);
// obj.phrase is phrase obj.dashes is dashes

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2011-07-29
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    相关资源
    最近更新 更多