2013-01-31 4 views
-1

이 내 코드루비 정규식은 반환

pong = /return/.match(cap.array[0]) 
if pong == "return" 
    puts "Pong" 
end 

cap.array[0] 내가 pp를 사용할 때 볼 수 확실히 /return/ 일치입니다 . 왜 그것이 일치하지 않는 아이디어? 나는 =====을 유형 문제 일 수 있다고 생각했지만 기쁨은 없었습니다.

+0

는'캡 무엇입니까 . 배열 [0]'? Q와 A 사이트에 맞게 코드를 최적화 할 수없는 이유는 무엇입니까? – sawa

+0

패킷의 PcapRub에 의해 생성 된 배열입니다. 나는 그것이 그것이 어쨌든 일치하는 것을 알고 있었기 때문에 그것이 무엇인지를 진술하는 것은 필요하다고 생각하지 않았다. –

+0

독자에게 추가 부담을주고 있습니다. 단순히 문자열 리터럴을 주거나'some_string'과 같은 것을 써야합니다. 그것은 훨씬 더 명확합니다. – sawa

답변

1

Regex#matchMatchData 개체를 반환합니다. 따라서 문자열 비교가 실패합니다.

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 
+0

완벽, 고마워요 (8 분 접수). –

3

왜 두 번 확인 하시겠습니까 ?? 아래처럼 간단한 방법으로 작업을 수행 할 수 있습니다

루비에서
/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 

그래서 당신이 피할 수있는 여러 검사