2010-06-17 17 views
10
रूबी में

, मैं बस चाहता हूँ एक स्ट्रिंग, के अंतिम n पात्रों में से छुटकारा पाने के लिए, लेकिन निम्नलिखितएक स्ट्रिंग (रूबी में) के अंतिम एन वर्णों को हटाने का सबसे अच्छा तरीका क्या है?

"string"[0,-3] 

है और न ही

काम नहीं करता है
"string".slice(0, -3) 

मैं चाहूँगा एक साफ विधि,

"string".chop.chop.chop 

कुछ भी तुच्छ नहीं हो सकता है, कृपया किसी को भी कृपया मुझे सिखाओ! धन्यवाद!

+5

+1। स्ट्रिंग के अंत में कुल्हाड़ी लेने के रूप में मुझे आपके बारे में सोचता है। :-) –

+1

'chop.chop.chop' में आपके 'स्ट्रिंग' की तीन अतिरिक्त प्रतियां बनाने का अतिरिक्त नुकसान है। अगर यह सिर्फ "हैलो, दुनिया" है, तो इससे कोई फर्क नहीं पड़ता, लेकिन अगर यह 'file.read ('/कुछ/वास्तव में/big.file ') है, तो यह होगा। –

+0

विपरीत कार्य, अंतिम 'एन' बाइट्स/वर्ण/आपकी स्ट्रिंग से जो कुछ भी हो रहा है वह थोड़ा मुश्किल है: http://stackoverflow.com/questions/2174767/extracting-the-last-n-characters-from-a-ruby -स्ट्रिंग –

उत्तर

19

आप श्रेणियों का उपयोग कर सकते हैं।

"string"[0..-4] 
+0

आपने मुझे इसे हराया! आप स्लाइस के साथ भी ऐसा कर सकते हैं: "स्ट्रिंग"। एसलिस (0 ..- 4) – sosborn

+3

[] और टुकड़ा synonums – Tao

+0

हाय, धन्यवाद! मैंने अभी पाया है कि मैंने [] या टुकड़े के दूसरे पैरामीटर पर गलती की है; यह अंत स्थिति की बजाय लंबाई है ... – Tao

9

आप gsub के साथ एक regex का उपयोग कर सकता है ...

"string".gsub(/.{3}$/, '') 
1

आप एक !slice को यह विध्वंस अन्य चर निर्दिष्ट करने के लिए बिना पिछले n वर्ण निकाल देंगे जोड़ते हैं:

my_string.slice!(my_string.length-3,my_string.length) 

की तुलना में:

new = my_string.slice(0..-4) 
`Chop.chop.chop` के लिए
संबंधित मुद्दे

 संबंधित मुद्दे