このコード例を使用する
#!/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
出力は、「tjampion zylophone ekscellent」ではなく、「tjampionzylophoneexcellent」になります。
gsubがそれぞれの中で個々の単語に適用される場合も同じことが当てはまります。なぜ最初に作用するのか、最後には作用しないのかわかりません。
編集
2番目のケースは、最初のケースとは異なる問題です。
#!/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