如何在 javascript 片段中为 "MadLibs" 风格的文字游戏编写非文字字符?

How to write non-words characters in a javascript snippet for a "MadLibs" style word game?

我在 FreeCodeCamp 上,我需要构建一个 "Mad Libs" 风格的文字游戏(我们称之为 "Word Blanks"。我必须创建一个 "Fill in the Blanks" 风格的句子。

在 "Mad Libs" 游戏中,您会得到一些缺少单词的句子,例如名词、动词、形容词和副词。然后用您选择的单词以完整句子有意义的方式填充缺失的部分。

考虑这句话 - "It was really ____, and we ____ ourselves ____"。这句话缺少三个部分——一个形容词、一个动词和一个副词,我们可以添加我们选择的词来完成它。然后我们可以将完成的句子分配给一个变量,如下所示:

var sentence = "It was really" + "hot" + ", and we" + "laughed" + "ourselves" + "silly.";

根据上面的说明,我得到了一个名词、一个动词、一个形容词和一个副词。我需要使用我选择的词以及我提供的词来组成一个完整的句子。

我需要使用字符串连接运算符 + 构建新字符串,使用提供的变量:myNoun、myAdjective、myVerb 和 myAdverb。然后我会将形成的字符串分配给结果变量。

我还需要考虑字符串中的空格,以便最后一句话的所有单词之间都有空格。结果应该是一个完整的句子。

现在,我写了下面的代码来完成上面的练习:

function wordBlanks(myNoun, myAdjective, myVerb, myAdverb) {

  var myNoun = "___";
  var myAdjective = "___";
  var myVerb = "___";
  var myAdverb = "___";    

  var result = "my " + myAdjective + myNoun + "loves to " + myVerb + "very " 
  + myAdverb;

  return result;
}

wordBlanks("dog", "big", "ran", "quickly");
wordBlanks ();

但我在 运行 测试时遇到以下错误:

// running tests wordBlanks("dog", "big", "ran", "quickly") should contain all of the passed in words separated by non-word characters (and any additional words in your madlib). wordBlanks("cat", "little", "hit", "slowly") should contain all of the passed in words separated by non-word characters (and any additional words in your madlib). // tests completed

这里的 "all of the passed in words separated by non-word characters (and any additional words in your madlib)" 应该是什么?


编辑

我根据以下内容修改了代码,现在可以使用了。测试失败是因为变量中提供的单词必须替换为不同的单词,还因为 var 导致函数缺少额外的单词和空格--->

function wordBlanks(myNoun, myAdjective, myVerb, myAdverb) {
  // Your code below this line
  var result = "I have a " + myAdjective + " bed and the " + myNoun + " always " + myVerb + " very " + myAdverb;

  // Your code above this line
  return result;
}

// Change the words here to test your function
wordBlanks("cat", "little", "hit", "slowly");

因此,缺少的 "non-word" 字符是空格和句子的附加部分(我添加了以下内容以及提供的单词:"I have a "、" bed and the "、" always ”和“非常”)。

可能这部分是问题所在:myAdjective + myNoun请注意它们之间没有 space 字符。尝试更改为 myAdjective + " " + myNoun 并查看是否有效。

听起来测试正在检查输出字符串以验证它包含每个传入的单词,并验证它们是否被某些东西分隔,例如空格、标点符号和其他单词。

它失败了,因为你用这个覆盖了每个输入:"___"。所以输入的单词丢失了,没有进入输出句子。

我想你忘了在形容词、名词前后和动词后添加空格

var myNoun = "dog";
var myAdjective = "big";
var myVerb = "ran";
var myAdverb = "quickly";


var wordBlanks = myNoun + " " + myVerb + " " + myAdjective + " "+ myAdverb + " " ;

试试这个,会成功的!

我猜你忘了在单词之间加空格,并在句末加上句号。

var myNoun = "dog";
var myAdjective = "big";
var myVerb = "ran";
var myAdverb = "quickly";

// Only change code below this line
var wordBlanks = "My " + myAdjective + " " + myNoun + " " + myVerb + " " + myAdverb + "."; // Change this line
// Only change code above this line