(( )) 内のテキストをユーザー入力に置き換える簡単なプログラムを作成しました。たとえば、このテキストがある場合:
i hab an terrible ((userinput1)) last ((userinput2)) in a horrible ((userinput3))
最初に (( を #{ および )) を } に置き換えようとしました
str1 = gets.chomp
str2 = str1.clone
a = 0
begin
s = str2.index('((', a)
str2[s..s+1] = '#{'
a = a + s + 1
end until str2.length < a
b = 0
begin
s = str2.index('))', b)
str2[s..s+1] = '}'
b = b + s + 1
end until str2.length < b
userinput1 = gets.chomp
userinput2 = gets.chomp
userinput3 = gets.chomp
puts str2
しかし、どういうわけか、ルビーはユーザー入力を検証しません。代わりに、次のようになります:
i hab an terrible #{userinput1} last #{userinput2} in a horrible #{userinput}
問題は、私のコードで私が書いたことだと思います:
str2[s..s+1] = '#{'
それ以外の
str2[s..s+1] = "#{"
残りのコードはすべて、} で閉じられるまでオブジェクトであるためです。それで、なにかお手伝いできますか ?私の問題を理解していただけましたか?
str1 = gets.chomp
word = str1.scan(/\(\(\w+\)\)/)
word.each do |word|
str1.gsub(word, "what the fuck")
end
puts str1