我正在学习红宝石。我正在尝试读取文件,找到一个字符串,并在字符串之前返回该值。
我试过这个:
line = "ALTER TABLE schemaname.tablename MODIFY col1 number(19,0)"
bol1 = line.include?("MODIFY")
puts "{#bol1}"
if bol1 = "true"
if line =~ /ALTER TABLE/ then
drop_found = "true"
location = line.index("ALTER TABLE") + 11
subline = line[location..-1]
sublineParts = subline.split(" ")
tableName = sublineParts[0]
puts " found modify column on {#tableName}"
end
else
puts " no modify found"
end
我这里没有任何输出。 bol1 = line.include?("MODIFY")
什么都不返回。请帮忙。
答案 0 :(得分:1)
一些错误/风格问题:
bol1 = "true"
应为bol1 == "true"
但是:.include?
函数是否返回字符串"true"
您应该检查值是否为真。 (bol1 == true
或if (bol1)
)这就是为什么你没有收回你期望的价值。then
is rarely used但不是永远。then
它会关闭if语句,if语句不需要结束,除非它完全独立。 else
也会关闭if
阻止。end
"{#bol1}"
代替"#{bol1}"
how variable interpolation works。 (你可以只puts bol1
,这会更容易。不需要使用#{}
)我的程序的工作版本是:
line = "ALTER TABLE schemaname.tablename MODIFY col1 number(19,0)"
bol1 = line.include?("MODIFY")
puts bol1
if (bol1)
if (line =~ /ALTER TABLE/)
drop_found = true
location = line.index("ALTER TABLE") + 11
subline = line[location..-1]
sublineParts = subline.split(" ")
tableName = sublineParts[0]
puts " found modify column on {#tableName}"
else
puts " no modify found"
end
end