मुझे या तो रूबी विधि या एक नियमित अभिव्यक्ति चाहिए जो मुझे एक एआरजीवी-जैसी सरणी में कमांड लाइन तर्कों की एक स्ट्रिंग को विभाजित करने देगी। मैं जो पूछ रहा हूं वह this question के समान है, लेकिन रूबी में है।एआरजीवी को पॉप्युलेट करने के लिए मैं एक स्ट्रिंग पसंद शैल कैसे विभाजित कर सकता हूं?
मैं रूबी प्रोग्राम के लिए यूनिट परीक्षण लिख रहा हूं जो ट्रोलॉप का उपयोग करके कमांड लाइन इनपुट को संसाधित करता है (हालांकि यह प्रश्न किसी अन्य विकल्प पार्सर के लिए समान होगा)।
विधि मैं परीक्षण करना चाहते हैं इस तरह दिखता है:
def parse_args(args)
Trollop::options(args) do
# ... parse options based on flags
end
end
मेरा कार्यक्रम में, मैं parse_args(ARGV)
कहते हैं। मेरे परीक्षण में, मैंने सोचा कि मैं बस रिक्त स्थान पर एक स्ट्रिंग विभाजन में गुजर सकता हूं, लेकिन यह एआरजीवी का व्यवहार नहीं है। निम्नलिखित की तुलना करें:
./argv_example.rb -f -m "Hello world" --extra-args "-vvv extra verbose"
=> ["-f", "-m", "Hello world", "--extra-args", "-vvv extra verbose"]
'-f -m "Hello world" --extra-args "-vvv extra verbose"'.split
=> ["-f", "-m", "\"Hello", "world\"", "--extra-args", "\"-vvv", "extra", "verbose\""]
+1, लेकिन यह ध्यान रखना चाहता था कि यह भी 1.8.7 में काम करता है। (और यहां तक कि 1.8.6, मैंने अभी कोशिश की)। http://www.ruby-doc.org/ruby-1.8/classes/Shellwords.html –
@ माइकल: धन्यवाद, मुझे इस बात के बारे में संदिग्ध जानकारी मिल रही थी कि यह किस संस्करण में उपलब्ध था, इसलिए मैंने केवल वही शामिल किया जो मैं सत्यापित कर सकता था। –