在文件中查找字符串,并使用ruby返回字符串之前的值

时间:2018-02-12 19:50:31

标签: ruby-on-rails 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.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")什么都不返回。请帮忙。

1 个答案:

答案 0 :(得分:1)

一些错误/风格问题:

  • 你在条件中使用了一个等于的赋值。 bol1 = "true"应为bol1 == "true"但是:
  • 您正在检查.include?函数是否返回字符串"true"您应该检查值是否为真。 (bol1 == trueif (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