문자열이있는 경우 어떻게 문자열에 "rldu"의 시퀀스가 포함되어 있는지 확인할 수 있습니까? 나는 정말 루비에게 새로운 것이다, 이것이 바보 같은 질문이라면 유감스럽게 생각한다.문자열에 루비의 "udlr"시퀀스가 포함되어 있는지 확인하십시오.
오른쪽 - 왼쪽, d- 아래, 위쪽. 예를 들어
: 문자열을 가정
str = "udlv" #should return false
str = "lrd" #should return true
문자열이있는 경우 어떻게 문자열에 "rldu"의 시퀀스가 포함되어 있는지 확인할 수 있습니까? 나는 정말 루비에게 새로운 것이다, 이것이 바보 같은 질문이라면 유감스럽게 생각한다.문자열에 루비의 "udlr"시퀀스가 포함되어 있는지 확인하십시오.
오른쪽 - 왼쪽, d- 아래, 위쪽. 예를 들어
: 문자열을 가정
str = "udlv" #should return false
str = "lrd" #should return true
은 완전히 당신이 조건에서 사용할 수있는 정수 또는 전무를 반환합니다 순서
str =~ /^[rldu]+$/
에 주어진 네 개의 문자로 구성되어야한다. 당신은 부울을 원하는 경우에, !!
과 트릭을 사용
!!str.match(/^[rldu]+$/)
Nik과 @ Ajedi32, 하루를 망쳐서 미안하지만 Ruby [스타일 가이드] (https://github.com/bbsosov/ruby-style-guide)는 "사용하지 마십시오!"라고 조언합니다. 너는 세련되고 싶지, 그렇지? –
@CarySwoveland 어느 것입니까? 예를 들어 GitHub Ruby 스타일 가이드에는 다음 내용이 언급되어 있지 않습니다. https://github.com/styleguide/ruby. https://github.com/bbatsov/ruby-style-guide를 참고하면, 주어진 예제는 Ruby 코드에서'!!'의 일반적인 사용법을 보여주지 않기 때문에, 나는 그 조언을 기꺼이 무시할 것입니다. –
mmm. 그것은 내 눈을 즐겁게하는 간결합니다 :) 대안은 무엇입니까 !! 속임수?제 3의 연산자는 내 의견으로는 더 낫지 않다. –
그 ' "rldu"의 순서'에 의해 가정 당신이 문자열이 구성되어 있는지 확인하려는 의미만을 r
, l
, d
, u
(모든 횟수, 순서에 상관없이)과 아무것도 좋은 오래된 정규 표현식은 잘 작동합니다 :
str =~ /^[udlr]*$/
당신이 엄격하게 그 부울 값 (참/거짓) 할 필요가 있다면, 당신은 두 개의 느낌표 (접두사가 붙지 않음)를 접두어로 붙일 수 있습니다 :
!!(str =~ /^[udlr]*$/)
Ruby는 모든 값을 true 또는 false로 해석 할 수 있기 때문에 대부분 그렇게 할 필요가 없습니다.
String
의 핵심 방법 here에 대한 설명서를 볼 수 있습니다. 그리고 here 정규 표현식에 대한 안내입니다.
p "udlv".count("^rlrd").zero? #=> false
p "lrd".count("^rldu").zero? #=> true
"^ rldu"수단 "당신이 문자열이 다음
!("udlv" =~ /[^udlr]/) # => false
!("lrd" =~ /[^udlr]/) # => true
rldu 이외의 모든 것 "
나는 혼란 스럽다. 'rldu'의 어떤 순서로 무엇을 의미합니까? 당신의 예제는 문자열이'r','l','d','u' (임의의 순서로) 문자만으로 구성되어 있는지 확인하고 싶지 않다는 것을 나타내는 것처럼 보입니다. – Ajedi32
두 번째 예제가 false를 반환 할 것으로 예상되지 않는 이유는 무엇입니까? ''u "'가 없습니다. – sawa
SO 회원은 "어리석은 질문"이 무슨 뜻인지 쉽게 이해할 수 있습니다. 그들이 마음에 두는 것은 어리석게 말한 질문입니다. '... ridu "의 연속은 의미가 없다. 명확하고 정확하며 완벽해야합니다! 의견을 설명하기보다는 질문을 편집하십시오. –