이것은 이상한 문제처럼 보일 것입니다. 입력 문자열을 사용하는이 비트의 Ruby 코드를 가지고 scan
과 flatten
을 사용하여 특정 값을 추출한 다음 if...then
문에서 해당 값을 연산해야하지만 문제가 있습니다.Ruby 정규식 및 변수를 평가하는 것
내 입력 문자열은 해당 지역의 '위험한 생물'의 수를 나타냅니다. 위험한 생물이나 둘 이상의 생물을 묘사 할 때 문자열은 항상 표준인데,
"지역의 위험한 생물 없음"또는 "위험한 생물 하나 ..."등등.
생물의 수를 나타내는 단어를 "no", "one", "two"등으로 가져와 나중에 숫자 값으로 변환하려고합니다. - "no"= 등 0, "하나"= 1,
이 작업을 수행하려면, 내가 사용
crittercount = strcheck.scan(/a*(no|one|two|three|four|five|six|seven|eight|nine|ten)a*/)
그럼 내 말은 변수 crittercount
상의 if then
가서 수행
if crittercount == "no"
critters = 0
... exit and go do something with the var...
end
내가 할 이 각에 대한 이자형. 난 그냥 여기
if crittercount == "ten"
critters = 10
else
critters = 99
end
이 문제가 사용
crittercount == "ten"
후
if crittercount == "one"
critters = 1
... exit and go do something with the var...
end
...
(나는이 문제를 알아 낸 얻을 때 나는 if..elsif..end
를 사용합니다) : 나는 10
에 동일한 maxcreatures
라는 변수가 있습니다. 예를 들어 strcheck
값을 "위험한 생물 없음"으로 지정하면 정확한 문자열을 반환하는 값을 출력합니다. 그런 다음 crittercount 변수를 인쇄합니다.이 예제에서는 "no"를 얻습니다. 그래도 난 내 if..then..
문을 통과 할 때
, 내가 사용하는 무엇을 평가 : 나는 99
지고있어 모든 상황에서
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
을하고 나는 모든 것을 시도했습니다 맹세합니다. 정규식 끝에 .flatten
을 사용하여 시도했지만, crittercount
var에 .strip
을 사용해 보았습니다. 나는 누군가가 이것을보고 '이런, 시도해'라고 바라고있어. 여기에 요청에
는
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
에게 일치 추출하는 정규식을 사용하여 문제가 발생한 정확한 코드를 제시해주십시오. –
나는 Ruby 함수의 범위를 벗어나는 호출이 있기 때문에 그것을 피하기를 바랬지 만, 주된 질문에이를 광고 할 것이다. – user401093
정규 표현식에있는'a * '는 무엇입니까? 그건 당신 문제에 대한 이유 중 하나 인 것처럼 보입니다. – sawa