2012-11-24 9 views
5

मैं \n रखने के लिए जब मैं रूबी में तार प्रिंट आउट करना चाहते हैं,रूबी - जब मैं तार

अब की तरह प्रिंट आउट, अगर मैं puts या print का उपयोग कैसे \ N रखने के लिए, \n ऊपर एक नई पंक्ति के साथ खत्म हो जाएगा : abc\nabc:

pry(main)> print "abc\nabc" 
abc 
abc 

वहाँ रूबी की तरह इसे प्रिंट जाने के लिए एक तरीका है?

अद्यतन

क्षमा करें कि शायद मैं इसे और अधिक स्पष्ट नहीं किया। मैं अपने regexps डीबग कर रहा हूं, इसलिए जब मैं एक स्ट्रिंग आउटपुट करता हूं, तो \n\n के रूप में प्रदर्शित होता है, न कि एक नई लाइन, मेरे लिए जांचना आसान होगा। तो @slivu का जवाब बिल्कुल वही है जो मैं चाहता हूं। धन्यवाद दोस्तों।

+0

की तरह यह कर सकते हैं \ n''? –

+0

@muistooshort मुझे लगता है कि वह एक _literal_ '\ n' – MiJyn

+0

@lkjoel चाहता है: या शायद वह एक नई लाइन और 'str.inspect' चाहता है, केवल larryzhao निश्चित रूप से जानता है। –

उत्तर

12

मैं p बजाय puts/print का उपयोग करने के लिए सुझाव है:

p "abc\nabc" 
=> "abc\nabc" 

और pry साथ वास्तव में आप में से किसी का उपयोग करने की जरूरत नहीं है उन्हें, बस अपनी स्ट्रिंग टाइप करें और दर्ज करें:

str = "abc\nabc" 
=> "abc\nabc" 
str 
=> "abc\nabc" 
2

क्योंकि \ N एक विशेष कीवर्ड है, तो आप भागने करने के लिए इसे विशेष कीवर्ड से पहले एक बैकस्लैश जोड़कर (और उसकी वजह से, बैकस्लैश भी भाग निकले किया जाना चाहिए) तो तरह है,: abs\\nabc। अगर आप \\n प्रिंट करना चाहते हैं, तो आपको इसे abs\\\\n पर बदलना होगा, और इसी तरह (बैकस्लैश प्रदर्शित करने के लिए दो बैकस्लाश)।

आप डबल कोट्स के बजाय एकल कोट्स का भी उपयोग कर सकते हैं ताकि विशेष कीवर्ड का व्याख्या नहीं किया जा सके। यह, IMHO, बुरा व्यवहार है, लेकिन अगर यह अपने कोड बनाता है अच्छे लग रहे हैं, मुझे लगता है कि इसके लायक यह :)

यहाँ तरीकों से आप बच सकते हैं के कुछ उदाहरण हैं है (एक प्रकार की टी एल की तरह; डॉ संस्करण):

puts 'abc\nabc' # Single quotes ignore special keywords 
puts "abc\\nabc" # Escaping a special keyword (preferred technique, IMHO) 
p "abc\nabc" # The "p" command does not interpret special keywords 
0

उपयोग% q उदाहरण के लिए एक स्ट्रिंग बनाने के लिए:

str = %q{abc\nklm} 
    puts str #=> 'abc\nklm' 

या

puts %q{abc\nklm} 

या एस्केप वर्ण का उपयोग करें

puts "abc\\nklm" 
1

रूबी में, एक ही उद्धरण शाब्दिक में तार, जैसे 'abc \ nabc' को अलग नहीं किया जाएगा।

1.9.3p194 :001 > print 'abc\nabc' 
abc\nabc => nil 

बनाम साथ दोहरे उद्धरण चिह्नों

1.9.3p194 :002 > print "abc\nabc" 
abc 
abc => nil 
3

तुम भी आप अपने स्ट्रिंग में एक नई पंक्ति चाहते हैं या आप एक शाब्दिक ` 'चाहते हैं कि यह

puts 'abc\nabc' 
संबंधित मुद्दे