gsub在整个代码段中无法正常工作

jaz*_*090 3 ruby gsub

使用此代码示例

#!/usr/bin/ruby
paragraph = "champion xylophone excellent"
paragraph = paragraph.gsub("ch","tj")
words = paragraph.split(/ /)
words.each do |word|
   if word[0,1] == "x"
     word[0.1] = "z" 
   end
end
paragraph = words.join(" ")
paragraph.gsub("x","ks")
print paragraph
Run Code Online (Sandbox Code Playgroud)

输出将是'tjampion zylophone excellent'而不是'tjampion zylophone ekscellent'

如果将gsub应用于各个单词中,则同样适用.我不明白为什么它在开始时起作用而不是在最后起作用.

编辑

第二种情况与第一种情况截然不同:

#!/usr/bin/ruby
paragraph = "champion xylophone excellent"
paragraph = paragraph.gsub("ch","tj")
words = paragraph.split(/ /)
words.each do |word|
   if word[0,1] == "x"
     word[0.1] = "z" 
   end
   word = word.gsub("x","ks")
end
paragraph = words.join(" ")
print paragraph
Run Code Online (Sandbox Code Playgroud)

Exu*_*ery 5

当你第一次使用gsub时,你将它分配给paragrah

paragraph = paragraph.gsub("ch","tj")
Run Code Online (Sandbox Code Playgroud)

第二次你错过了作业

改变paragraph.gsub("x","ks")

paragraph = paragraph.gsub("x","ks")
Run Code Online (Sandbox Code Playgroud)

  • 或更改为'paragraph.gsub!("x","ks")' (5认同)