【发布时间】:2017-02-01 22:53:24
【问题描述】:
现在,如果我只想更改单词的一部分,该怎么办?就像“Car”到“cah”,反之亦然,在“Martha”到“Marther”。在第二种情况下,如果我只是做了这样的 if:
<if sentance.include? "er"
user_input.gsub!(/er/, "a")
end >
它会占用“MArthA”中的所有“a”,这不是我想要的。
有什么想法吗? 对于其他示例。 Replace words in string - ruby
【问题讨论】:
-
如果
str = "Where's Martha, Billy-Bob?",您可能想要str.gsub(/(?<=\bMarth)a\b/,"er") #=> "Where's Marther, Billy-Bob?"之类的东西。(?<=\bMarth)被称为积极的后视。它确保要替换的字符 ("a") 前面有一个分词符 (\b),后跟字符串"Marth",但这不是匹配的一部分。如果我知道这句话只包含一个"Martha",我可以使用sub而不是gub。你提到“cah”让我想起了Crow Mystery。 -
您需要更好地定义语法,以及完成这些转换的规则。难道只是最后一个
a? -
乌鸦的笑话很棒。基本上我的目标是建立一个从基本语言到新英格兰口音的文本输入转换器。所以使用这些规则,我只关心单词的结尾;特别是以 As 或 ERs- 结尾的词作为白话中的交换。 a$ 可能有效,但在行尾意味着什么?它是否在字符串中搜索以 As 结尾的单词?还是只取字符串中的最后一个单词-还是a\z?
标签: ruby string gsub string-substitution