두 개의 10 진수 값 또는 특정 형식의 정수 사이에서 더 큰 값을 찾으려고합니다. 예를 들어, 여러 개의 점이있는 특정 문자열 중에서 가장 큰 문자
- 은
2.1.5
와2.2
을 비교합니다.2.2
은 더 큰 것입니다. 2.3.3
과2.3.456
을 비교하십시오.2.3.456
이 더 큽니다.
처리 할 수 없습니다. 이 문제를 해결할 수있는 방법을 제안하십시오.
당신은 각 버전에서 배열을 만들 수 있습니다두 개의 10 진수 값 또는 특정 형식의 정수 사이에서 더 큰 값을 찾으려고합니다. 예를 들어, 여러 개의 점이있는 특정 문자열 중에서 가장 큰 문자
2.1.5
와 2.2
을 비교합니다. 2.2
은 더 큰 것입니다.2.3.3
과 2.3.456
을 비교하십시오. 2.3.456
이 더 큽니다.처리 할 수 없습니다. 이 문제를 해결할 수있는 방법을 제안하십시오.
당신은 각 버전에서 배열을 만들 수 있습니다:
def to_version(s)
s.split('.').map(&:to_i)
end
to_version('2.3.3')
# => [2, 3, 3]
지금 당신이 (배열은 비교할 수) 두 결과를 비교할 수 있습니다
['2.2', '2.1.5'].max_by { |x| to_version(x) }
# => "2.2"
['2.3.3', '2.3.456'].max_by { |x| to_version(x) }
# => "2.3.456"
['2.13.3', '2.3.456'].max_by { |x| to_version(x) }
# => "2.13.3"
잘 작동합니다. 감사합니다. – Rubyist
루비스트에 대한 설명은 [Array # <=>] (http://ruby-doc.org/core-2.3.0/Array.html#method-i-3C-3D-3E)을 참조하십시오. Uri가 의미하는 바는 "배열은 비슷합니다"입니다. –
:
['2.13.3', '2.3.456'].map{|v| Gem::Version.new(v)}.sort
# =>[#<Gem::Version "2.3.456">, #<Gem::Version "2.13.3">]
네, 또는'sort_by' –
은 다음과 같은 문자열입니까? 왜냐하면'2.3.456'은'Numeric'의 유효한 인스턴스가 아니기 때문입니다. –
예, 지금은 문자열 형식입니다. – Rubyist
'2.2'를 제외하고는 십진수 나 정수가 아닙니다. – sawa