이 내 코드루비 정규식은 반환
pong = /return/.match(cap.array[0])
if pong == "return"
puts "Pong"
end
cap.array[0]
내가 pp
를 사용할 때 볼 수 확실히 /return/
일치입니다 . 왜 그것이 일치하지 않는 아이디어? 나는 ==
과 ===
을 유형 문제 일 수 있다고 생각했지만 기쁨은 없었습니다.
이 내 코드루비 정규식은 반환
pong = /return/.match(cap.array[0])
if pong == "return"
puts "Pong"
end
cap.array[0]
내가 pp
를 사용할 때 볼 수 확실히 /return/
일치입니다 . 왜 그것이 일치하지 않는 아이디어? 나는 ==
과 ===
을 유형 문제 일 수 있다고 생각했지만 기쁨은 없었습니다.
Regex#match
은 MatchData
개체를 반환합니다. 따라서 문자열 비교가 실패합니다.
pong = /return/.match('i shall return this')
# cast it to string
if pong.to_s == "return"
# or do this
# if pong[0] == "return"
puts "Pong"
end
완벽, 고마워요 (8 분 접수). –
왜 두 번 확인 하시겠습니까 ?? 아래처럼 간단한 방법으로 작업을 수행 할 수 있습니다
루비에서/return/ =~ "Functions return value" #=> 14
/return/ =~ "return" #=> 0
: 예를 들어
if /return/ =~ cap.array[0]
puts "pong"
end
puts "hello" if 0 #=> hello # 0 is not false
그래서 당신이 피할 수있는 여러 검사
는'캡 무엇입니까 . 배열 [0]'? Q와 A 사이트에 맞게 코드를 최적화 할 수없는 이유는 무엇입니까? – sawa
패킷의 PcapRub에 의해 생성 된 배열입니다. 나는 그것이 그것이 어쨌든 일치하는 것을 알고 있었기 때문에 그것이 무엇인지를 진술하는 것은 필요하다고 생각하지 않았다. –
독자에게 추가 부담을주고 있습니다. 단순히 문자열 리터럴을 주거나'some_string'과 같은 것을 써야합니다. 그것은 훨씬 더 명확합니다. – sawa