루비의 배열에서 후행 공백 및 nil 값을 제거하는 방법.루비의 배열에서 후행 빈 값 제거
"컴팩트"기능은 필자의 요구 사항을 충족시키지 못합니다. 그것은 배열에서 모든 'nil'값을 제거합니다. 하지만 후행 빈 값과 nil 값만 제거하려고합니다. 이에 나에게 어떤 제안을주십시오 .. 당신은 단지 몇 nil
의 빈 문자열 뒤에있는 경우
루비의 배열에서 후행 공백 및 nil 값을 제거하는 방법.루비의 배열에서 후행 빈 값 제거
"컴팩트"기능은 필자의 요구 사항을 충족시키지 못합니다. 그것은 배열에서 모든 'nil'값을 제거합니다. 하지만 후행 빈 값과 nil 값만 제거하려고합니다. 이에 나에게 어떤 제안을주십시오 .. 당신은 단지 몇 nil
의 빈 문자열 뒤에있는 경우
['a', "", nil].compact.reject(&:empty?) => ["a"]
이 그것을 할 것이며, 잘해야한다 : 예를 들어
a.pop while a.last.to_s.empty?
:
를>> a = ["where", "is", nil, "pancakes", nil, "house?", nil, '', nil, nil]
=> ["where", "is", nil, "pancakes", nil, "house?", nil, "", nil, nil]
>> a.pop while a.last.to_s.empty?
=> nil
>> a
=> ["where", "is", nil, "pancakes", nil, "house?"]
는 .to_s.empty?
비트는 빈 문자열로 nil
를 캐스팅 단지 quick'n'dirty 방법입니다 그래서 두 nil
d ''
은 단일 조건으로 처리 할 수 있습니다. 예를 들어
n = a.length.downto(0).find { |i| !a[i].nil? && !a[i].empty? }
a.slice!(n + 1, a.length - n - 1) if(n && n != a.length - 1)
:
>> a = ["where", "is", nil, "pancakes", nil, "house?", nil, '', nil, nil]
=> ["where", "is", nil, "pancakes", nil, "house?", nil, "", nil, nil]
>> n = a.length.downto(0).find { |i| !a[i].nil? && !a[i].empty? }
=> 5
>> a.slice!(n + 1, a.length - n - 1) if(n && n != a.length - 1)
=> [nil, "", nil, nil]
>> a
=> ["where", "is", nil, "pancakes", nil, "house?"]
아주 좋은 해결책입니다. – derp
당신이 비어 전무 후행 한 것은 무엇을 일으키는
또 다른 방법은 당신이 차단하지 않을 먼저 거꾸로 배열을 검사하는 것입니다 배열의 값? 문자열을 분할 한 결과입니까? –