Ruby on rails 在文件中查找字符串,并使用ruby返回字符串前面的值
我正在学习ruby。我试图读取一个文件,找到一个字符串,然后返回字符串前面的值 我试过这个:Ruby on rails 在文件中查找字符串,并使用ruby返回字符串前面的值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在学习ruby。我试图读取一个文件,找到一个字符串,然后返回字符串前面的值 我试过这个: 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 = "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”)
不返回任何内容。请提供帮助。一些错误/样式问题:
- 在条件语句中使用赋值等于
应该是bol1=“true”
但是:bol1==“true”
- 您正在检查
函数是否返回字符串.include?
您应该检查该值是否为true。(“true”
或只是bol1==true
)这就是为什么您没有得到预期的值if(bol1)
- 但不是永远
- 如果要使用
,那么它会关闭If语句,If语句不需要结束,除非它完全独立
也将关闭else
块if
- 您缺少底部的结束
结尾
- 您尝试将
“{{bol1}”放入
,而不是
,后者是。(您可以将bol1放入“{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
也许这个问题可以帮助你:请一次问一个问题,说明你在哪里卡住了,你尝试了什么代码。请检查第二个if块中有许多未使用的变量。这是故意的吗?@0012,这不是故意的。我就这样试过了,滚回去。从你的问题中删除那么多内容会使它偏离主题并使答案无效。这很有效。。感谢您的帮助和解释@0112不客气。学习ruby祝你好运。@shriBin因为你有两个嵌套的if块,你也应该使用and语句,比如
if(bol1&&line=~/ALTER TABLE/)
。我不知道你这样做是否有具体的原因。只是一个建议。