[ruby] Ruby에서 문자열의 Nil 또는 Length == 0을 확인하는 더 좋은 방법이 있습니까?

Ruby에서 문자열이 0인지 또는 길이가 0인지 확인하는 다음보다 나은 방법이 있습니까?

if !my_string || my_string.length == 0
  return true
else
  return false
end

C #에는 편리한 것이 있습니다

string.IsNullOrEmpty(myString)

루비와 비슷한 점이 있습니까?



답변

성능에 대해 걱정하지 않으면 다음을 자주 사용합니다.

if my_string.to_s == ''
  # It's nil or empty
end

물론 다양한 변형이 있습니다 …

if my_string.to_s.strip.length == 0
  # It's nil, empty, or just whitespace
end


답변

ActiveSupport가 필요하면 #blank?NilClass와 String 모두에 대해 정의 된 메소드를 사용하면 됩니다.


답변

나는 이것을 Rails / ActiveSupport가 아닌 환경에서 다음과 같이하고 싶다 :

variable.to_s.empty?

이것은 다음과 같은 이유로 작동합니다.

nil.to_s == ""
"".to_s == ""


답변

jcoby의 제안에 대한 대안은 다음과 같습니다.

class NilClass
  def nil_or_empty?
    true
  end
end

class String
  def nil_or_empty?
    empty?
  end
end


답변

Rails (ActiveSupport)가 편리한 공백을 갖기 전에 여기에서 말했듯이 ? 메소드와 다음과 같이 구현됩니다.

class Object
  def blank?
    respond_to?(:empty?) ? empty? : !self
  end
end

루비 기반 프로젝트에 쉽게 추가 할 수 있습니다.

이 솔루션의 장점은 문자열뿐만 아니라 배열 및 기타 유형에서도 자동으로 작동한다는 것입니다.


답변

variable.blank? 할 것입니다. 문자열이 비어 있거나 문자열이 nil이면 true를 리턴합니다.


답변

nil?부울 컨텍스트에서는 생략 할 수 있습니다. 일반적으로 이것을 사용하여 C # 코드를 복제 할 수 있습니다.

return my_string.nil? || my_string.empty?