ฉันมีเขตข้อมูลhr
และmin
จำนวนเต็มทั้งสองในใบสมัครของฉัน สำหรับhr
ฟิลด์หากผู้ใช้ป้อน "1" ฉันต้องการให้ Rails pad อัตโนมัติเป็น "01" ก่อนที่จะบันทึกลงในฐานข้อมูล นอกจากนี้สำหรับmin
ฟิลด์หากผู้ใช้ป้อน "0" ควรใส่เป็น "00"
ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันมีเขตข้อมูลhr
และmin
จำนวนเต็มทั้งสองในใบสมัครของฉัน สำหรับhr
ฟิลด์หากผู้ใช้ป้อน "1" ฉันต้องการให้ Rails pad อัตโนมัติเป็น "01" ก่อนที่จะบันทึกลงในฐานข้อมูล นอกจากนี้สำหรับmin
ฟิลด์หากผู้ใช้ป้อน "0" ควรใส่เป็น "00"
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
มันจะเป็นการดีกว่าถ้าคุณเก็บมันไว้เป็นจำนวนเต็มและแสดงมันตามที่คุณอธิบายไว้ในขณะใช้งานจริง ทุกภาษามีวิธีการของตัวเองเพื่อศูนย์แผ่น - สำหรับ Ruby คุณสามารถใช้String # rjust เมธอดนี้วางสตริง (ชิดขวา) เพื่อให้กลายเป็นความยาวที่กำหนดโดยใช้อักขระ padding ที่กำหนด
str.rjust(integer, padstr=' ') → new_str
หาก
integer
มีค่ามากกว่าความยาวของstr
ผลตอบแทนใหม่String
ของความยาวinteger
ที่มีstr
สิทธิธรรมและเบาะกับpadstr
;str
มิฉะนั้นผลตอบแทน
some_int = 5
some_int.to_s.rjust(2, '0') # => '05'
some_int.to_s.rjust(5, '0') # => '00005'
another_int = 150
another_int.to_s.rjust(2, '0') # => '150'
another_int.to_s.rjust(3, '0') # => '150'
another_int.to_s.rjust(5, '0') # => '00150'
คุณสามารถแปลงจำนวนเต็มเป็นสตริงชนิดนั้นด้วย:
result_string = '%02i' % your_integer
สิ่งนี้เป็นอิสระจากวิธีการบันทึกใน db
มันมีประโยชน์มากทีเดียว:
"%.2d" % integer
สตริงผลลัพธ์จะมีอักขระ 2 ตัวและถ้าตัวเลขน้อยกว่า 2 ตัวอักษร 0s จะปรากฏในสตริง
คุณไม่สามารถจัดเก็บ01
เป็นจำนวนเต็ม มันจะถูกแปลงเป็น1
คุณสามารถเก็บเป็นสตริงหรือคุณสามารถแสดงเป็นสตริง "01"
ฉันชอบโอเปอเรเตอร์% แม้ว่าดูเหมือนว่าจะไม่ถูกใจ ...
2.0.0-p247 :001 > '%02i' % 1
=> "01"
2.0.0-p247 :002 > '%2i' % 1
=> " 1"
2.0.0-p247 :003 > '%-2i' % 1
=> "1 "
อีกวิธีหนึ่งในการบรรลุเป้าหมายนี้คือการวางจำนวนเต็ม ณ เวลาที่แสดงโดยใช้ sprintf:
f = sprintf '%04d', 49
# f = "0049"
ลองสิ่งนี้และคุณสามารถเปลี่ยนพวกมันให้ตรงกัน
def numeric92(num)
if num.present?
if num < 0 && num > -1
('-%05d' % num) + '.' + ('%.2f' % num).split('.').last
else
('%06d' % num) + '.' + ('%.2f' % num).split('.').last
end
else
'000000.00'
end
end
if num < 0 && num > -1
คืออะไร?