-3

我是一名试图学习 Ruby 基础知识的学生。有人问我一个问题,但无法使用存储、对象和方法找出答案。问题是在线的,所以对我来说很难找到实时帮助。

一家游戏公司与您联系,希望您创建一个允许用户输入多个特定词性的应用程序。用户完成此任务后,屏幕上将出现一首定制的诗歌。该公司要求您在包含 Ruby 代码的同时包含完整的内部文档,包括文档、功能和解释性注释。

这是公司希望您使用的文本:

“名字有一只小哺乳动物,小哺乳动物,小哺乳动物,名字有一只小哺乳动物,它的毛色像雪一样。它跟着她放一天,放一天,放一天,它让孩子们动词1和动词2看到哺乳动物

名字是玛丽
哺乳动物是羔羊
颜色是白色
地方是学校
动词 1 是笑
动词 2 是玩
4

2 回答 2

0

String#gsub在为每个替换保存唯一占位符的字符串上使用。

请注意,如果您反复执行此操作(替换所有名称,然后替换所有哺乳动物,然后替换所有颜色等),您将面临用户输入与您的占位符之一相同的文本的风险。

为避免这种情况,请使用单个正则表达式来匹配所有占位符,并使用 gsub 的块形式来选择适当的替换字符串。

于 2013-03-30T04:28:28.167 回答
0

正如 Phrogz 所说,您应该考虑使用String 的gsub方法,因为它是您想要做的事情的基础。

如果您在 Stack Overflow 上搜索我给出的其他答案,您会发现有几个在做您想做的事情,全部使用gsub, 以及Regexp.union构建所需的模式。

以下是您需要的基本信息:

将您的数据转换为哈希:

{
  'Name'   => 'Mary'
  'Mammal' => 'Lamb'
  'colour' => 'white'
  'place'  => 'school'
  'verb 1' => 'laugh'
  'verb 2' => 'play'
}

Hash 的keys方法将非常有用,结合Regexp.union.

于 2013-03-30T05:42:41.167 回答