2010-05-09 4 views
1

디렉토리 경로의 마지막 문자가 '/'인지 확인하려고합니다. 루비가 문자열의 특정 색인을 연관된 ASCII 코드가 아닌 문자로 처리하게하려면 어떻게해야합니까?Ruby에서 문자열 색인을 ASCII 코드 대신 처리하는 방법은 무엇입니까?

예를 들어 항상 다음은 false 반환 dir[dir.length - 1]이 (오히려 '/'가 아닌) ASCII 코드 47를 반환하기 때문에

dir[dir.length - 1] == '/' 

이입니다.

47을 '/'로 해석하는 방법에 대한 의견이 있으십니까? 아니면 처음부터 이것을 처리하는 완전히 다른 방법이 있습니까?

감사합니다.

+0

중복 된 http://stackoverflow.com/questions/371333/how-to-extract-a-single-character-as-a-string-from-a-larger-string-in-ruby 및 기타 질문 –

답변

5

Ruby 1.8 및 Ruby 1.9에서 동작이 변경되었으므로 약간주의해야합니다.

# In Ruby 1.8: 
"hello"[0] == 104 

# In Ruby 1.9: 
"hello"[0] == "h" 

# In both versions: 
"hello"[0] == ?h 
"hello"[0, 1] == "h" 
일반적으로

, 당신은 단지 문자와 동일한 지 어떤지를 테스트하려는 경우, 당신은 (1.8 아스키 코드와 1.9의 문자열입니다) 문자 x을 의미하는 ?x를 사용하거나 다른 명시적인 길이를 주어 범위 형식을 사용하십시오. 이것은 ascii 만 다루고 있다고 가정합니다. 유니 코드의 경우 아마도 Ruby 1.9를 사용해야합니다. 귀하의 예제에서

는 가장 좋은 형태는 아마도 dir[-1] == ?/, 또는 레일 (또는 activesupport)를 사용하는 경우, 당신은 당신이 측면 참고로 => "/" 을 반환 47.chr와 '/'로 47을 해석 할 수 dir.ends_with? '/'

0

를 선호 할 수도 당신은 그래서 dir[dir.length-1]

보다는, 마지막 문자를 반환 dir[-1]을 사용할 수 있습니다, 이것은 루비 1.8 또는 1.9 중 하나에서 작동합니다

dir[-1].chr == '/'

관련 문제