많은 수의 쉼표를 추가하는 데 유용한 방법이 있습니까?
레일에 쉼표로 숫자를 인쇄하는 방법이 있습니까?
예를 들어, 숫자가 54000000.34 인 경우 <% = number.function %>을 실행하면 "54,000,000.34"가 출력됩니다.
감사!
number_with_delimiter
방법 이 필요합니다 . 예를 들면 다음과 같습니다.
<%= number_with_delimiter(@number, :delimiter => ',') %>
또는이 number_with_precision
방법을 사용하여 숫자가 항상 소수점 이하 두 자리로 표시되도록 할 수 있습니다 .
<%= number_with_precision(@number, :precision => 2, :delimiter => ',') %>
레일을 사용하지 않는 사람 :
number.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse
예, NumberHelper를 사용하십시오 . 찾고있는 방법은 number_with_delimiter 입니다.
number_with_delimiter(98765432.98, :delimiter => ",", :separator => ".")
# => 98,765,432.98
뷰 외부에 쉼표를 추가하고 일부 모듈을 포함하지 않으려면 number_to_delimited 메소드를 사용하십시오 (레일 버전> 4.02). 예를 들면 다음과 같습니다.
#inside anywhere
ActiveSupport::NumberHelper.number_to_delimited(1000000) # => "1,000,000"
위의 내용에 암시되지 않았기 때문에 많은 일을하지만 FYI를하는 경우 Rails는이 number_with_delimiter
방법에 대한 합리적인 기본값을 가지고 있습니다.
#inside controller or view
number_with_delimiter(2444323.4)
#=> 2,444,323.30
#inside console
helper.number_with_delimiter(233423)
#=> 233,423
가장 일반적인 방법으로 구분 기호 값을 제공 할 필요가 없습니다.
Rails의 유무에 관계없이 이를 수행하는 직접적인 방법은 다음 과 같습니다.
require 'active_support/core_ext/numeric/conversions'
12345.to_s(:delimited) # => "12,345"
12345.6789.to_s(:delimited) # => "12,345.6789"
자세한 옵션은 활성 지원 코어 확장-숫자 형식을 참조하십시오 .
소수를 처리하는 레일을 사용하지 않는 사람들에게 더 좋은 방법은 다음과 같습니다.
parts = number.to_s.split('.')
parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")
parts.join('.')
다른 구분 기호를 원하면 정규식에서 마지막 ','을 변경하십시오.
보너스로 다음과 같이 정규 표현식이 작동합니다.
- gsub는 정규 표현식과 일치하는 모든 것을 gsub에 전달 된 두 번째 매개 변수로 바꿉니다. 이 경우에는입니다
\\1
.\\1
하게\1
정규식의 첫 번째 캡처 그룹과 일치하는 평가 때. 이 정규식에서(\d)
. (\d)(?=(\d\d\d)+)
숫자 다음에 하나 이상의 3 자리 그룹을 찾습니다. 첫 번째 세트는 우리의\1
캡처 그룹이고, 두 번째는입니다\2
. 우리가 그것을 그대로두면 우리는 얻을 것입니다 :123456.gsub!(/(\d)(?=(\d\d\d)+)/, "\\1,") #=> 1,2,3,456
1234 개의 일치, 2345 개의 일치 및 3456 개의 일치 때문에 1, 2 및 3 뒤에 쉼표를 넣습니다.- (?! \ d)를 추가하면 앞에 오는 숫자
(\d)(?=(\d\d\d)+(?!\d))
와 일치 하지 않습니다. 따라서 숫자 다음에 3 자리 숫자 다음에 숫자가 나오지 않습니다. 이것이 작동하는 이유는 gsub가 문자열과 일치하는 것을 계속 대체하기 때문입니다. 첫 번째 일치 항목 만 교체하려는 경우 123456789와 같은 숫자의 경우 123456,789가됩니다. 123456,789는 여전히 정규 표현식과 일치하므로 123,456,789를 얻습니다.
여기 코드가 있습니다 : https://github.com/rails/rails/blob/master/activesupport/lib/active_support/number_helper.rb#L298-L300
그리고 여기 그 정규식에서 무슨 일이 일어나고 있는지 배웠습니다 : http://www.tutorialspoint.com/ruby/ruby_regular_expressions.htm
도우미를 사용하지 않는 또 다른 솔루션 : 소수점 이하 두 자리로 형식을 지정한 다음을 바꿉니다. 으로
puts(("%.2f" % 2.5666).gsub('.',','))
>> 2,57
당신은 방법을 사용할 수 있습니다 ActiveSupport
예를 들면 다음과 같습니다.
ActiveSupport::NumberHelper::number_to_currency(10000.1234,{precision: 2,unit: ''})
def add_commas(numstring)
correct_idxs = (1..100).to_a.select{|n| n % 6 == 0}.map{|n| n - 1}
numstring.reverse.chars.join(",").chars.select.with_index{|x, i| i.even? || correct_idxs.include?(i)}.join.reverse
end
이것은 루비에 내 길이었다
추가 편집 : 기본적으로 숫자 사이에 모든 쉼표를 추가하고 색인 + 1 % 6 인 쉼표 만 선택합니다
쉼표를 100까지 올릴 수 있다고 생각했지만 슈퍼 긴 숫자를 원하면 100을 더 높은 숫자로 만드십시오.
자바 스크립트 사용자를위한
function numberWithDelimiter(value) {
return (value+"").split("").reverse().join("").replace(/(\d{3})(?=\d)/g, '$1,').split("").reverse().join("")
}
:)
참고 URL : https://stackoverflow.com/questions/1078347/is-there-a-rails-trick-to-adding-commas-to-large-numbers
'IT' 카테고리의 다른 글
jquery 3.0 url.indexOf 오류 (0) | 2020.05.13 |
---|---|
모든 Git 명령을 시작할 때“git”을 입력하지 않으려면 어떻게해야합니까? (0) | 2020.05.13 |
배치 파일에서 매개 변수가 비어 있는지 테스트하는 올바른 방법은 무엇입니까? (0) | 2020.05.12 |
파이썬에서 인덱스를 사용하여 목록 반복 (0) | 2020.05.12 |
파이썬에서 0xbin ()이 False를 반환하는 이유는 무엇입니까? (0) | 2020.05.12 |