这似乎是一个奇怪的问题。我有这段 Ruby 代码,它接受一个输入字符串,使用scan
并flatten
提取一个特定的值,然后希望在语句中对该值进行操作if...then
,但我遇到了问题。
我的输入字符串描述了该地区“危险生物”的数量。当描述没有危险生物或两个或更多生物时,字符串总是标准的,例如:
“该地区没有危险生物”或“一个危险生物......”等等。
我正在使用它来获取表示生物数量的单词:“no”、“one”、“two”等,希望稍后将它们转换为数值 - “no” = 0、“one " = 1 等。
为此,我使用:
crittercount = strcheck.scan(/a*(no|one|two|three|four|five|six|seven|eight|nine|ten)a*/)
然后我去if then
对变量做一个crittercount
说:
if crittercount == "no"
critters = 0
... exit and go do something with the var...
end
我为每个人都这样做。(当我发现这个问题时,我会使用if..elsif..end
)
if crittercount == "one"
critters = 1
... exit and go do something with the var...
end
...
crittercount == "ten"
我刚使用后
if crittercount == "ten"
critters = 10
else
critters = 99
end
这是问题所在:我有一个名为maxcreatures
equal to的变量10
。我以strcheck
“该地区没有危险生物”的值为例,我打印出它返回的确切字符串的值。然后我打印出 crittercount 变量,在这个例子中,我得到“否”。
不过,当我完成我的if..then..
陈述时,我会评估如何使用:
if critters > maxcreatures
print "Maximum Creatures " + critters.to_s + " and maximum is #{maxcreatures}. Lets Bail"
else
print "Critter count " + critters.to_s + " is less than #{maxcritters} Keep going."
end
在我遇到的每一种情况下99
,我发誓我已经尝试了一切。我尝试.flatten
在正则表达式的末尾使用,我尝试.strip
在crittercount
var 上使用。我希望有人看到这个并说“呃,试试这个。”
根据要求,这里是所有代码,这里有对其他可能没有意义的函数的调用......
maxcritters = 2
critters = 0
put "count critter"
strcheck = matchfind "You notice ?"
crittercount = strcheck.scan(/a*(no|one|two|three|four|five|six|seven|eight|nine|ten)a*/)
echo strcheck
echo crittercount
crittercount = crittercount.strip
if crittercount == "no"
critters = 0
goto "roundup"
end
if crittercount == "one"
critters = 1
goto "roundup"
end
if crittercount == "two"
critters = 2
goto "roundup"
end
if crittercount == "three"
critters = 3
goto "roundup"
end
if crittercount == "four"
critters = 4
goto "roundup"
end
if crittercount == "five"
critters = 5
goto "roundup"
end
if crittercount == "six"
critters = 6
goto "roundup"
end
if crittercount == "seven"
critters = 7
else
critters = 99
end
roundup:
if critters > maxcritters
echo "Maximum Creatures " + critters.to_s + " and maximum is #{maxcritters}. Lets Bail"
critters == nil
fput "retreat"
else
echo "Critter count " + critters.to_s + " is below maximum of #{maxcritters} - We're cool. Keep going."
critters == nil
goto "combatcheck"
end