如何替换模板中的字符串?

时间:2013-03-30 04:06:45

标签: ruby

我是一名学生,正在努力学习Ruby的基础知识。我被问到一个问题,并且无法使用存储,对象和方法找出答案。 问题在线,所以找到现场帮助对我来说很难。

  

游戏公司已经联系您创建一个允许用户输入几个特定词性的应用程序。用户完成此任务后,屏幕上将显示自定义诗歌。该公司已经要求您和Ruby代码一起提供完整的内部文档,包括文档,功能和解释性注释。

     

以下是公司希望您使用的文字:

     “名字有一个小哺乳动物,小哺乳动物,小哺乳动物,名字有一点哺乳动物,它的羊毛颜色如雪。它跟着她放置一天,放置一天,放置一天,它使孩子verb1和动词2看到一个哺乳动物到位

Name is Mary
Mammal is Lamb
colour is white
place is school
verb 1 is laugh
verb 2 is play

2 个答案:

答案 0 :(得分:0)

对包含每个替换的唯一占位符的字符串使用String#gsub

请注意,如果您迭代地执行此操作 - 替换所有名称,则替换所有哺乳动物,然后替换所有颜色等 - 您冒着用户输入与占位符相同的文本的风险。

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

答案 1 :(得分:0)

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

如果您搜索Stack Overflow以获得我给出的其他答案,您会发现有几个人正在使用gsub,并使用Regexp.union来构建所需的模式。

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

将您的数据转换为哈希:

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

Hash's keys方法非常有用,与Regexp.union结合使用。