我写了一个简单的程序来用用户输入替换 (( )) 中的文本:如果我有例如这个文本:
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