मैं किसी संख्या को स्वरूपित करते समय प्रत्येक तीसरे वर्ण पर एक स्थान डालना चाहता हूं। इस कल्पना के अनुसार:प्रत्येक तीसरे अंक पर विभाजित करने के लिए संख्या को स्वरूपित करना
it "should format an amount" do
spaces_on(1202003).should == "1 202 003"
end
और मैं कोड के इस टुकड़े कि नौकरी
def spaces_on amount
thousands = amount/1000
remainder = amount % 1000
if thousands == 0
"#{remainder}"
else
zero_padded_remainder = '%03.f' % remainder
"#{spaces_on thousands} #{zero_padded_remainder}"
end
end
तो मेरे सवाल है कि अगर यह यह करने के लिए सबसे अच्छा तरीका था करता है के साथ आया था। मुझे संदेह है कि इसके चारों ओर एक रेगेक्स तरीका हो सकता है लेकिन मुझे यकीन नहीं है कि मुझे इसकी पठनीयता पसंद आएगी। (दूसरी ओर -% 03.f जादू नहीं बहुत पठनीय या तो है ....)
+1 आप सही मेरे मन से बाहर जवाब ले लिया! =) – maerics
अच्छा टुकड़ा। मुझे लगता है कि कई डेवलपर्स रेगेक्स के बारे में नहीं जानते हैं जो मुझे इससे बचाता है - लेकिन यह भी रिकर्सन के बारे में भी सच है! मुद्दा लेना। – froderik
बेशक यहां जादू नियमित अभिव्यक्ति नहीं है - एक बार जब आप विधि के लक्ष्य को जानते हैं तो 'हर 3 वर्णों को रिक्त स्थान जोड़ना' चुनना आसान होता है। 'रिवर्स'/'रिवर्स' एकमात्र वास्तविक मानसिक छलांग है। – Gareth