How can I output back slashes and double quotes in a Ruby string? -


मैं आउटपुट की कोशिश कर रहा हूं

  [fish] \ "aquatic animal \" \ n   

लेकिन निकटतम मैं आया हूं:

  [मछली] \ aquatic animal @ entries.each do | key, value | "" ["+" + +] "+" \\ "+ value +" \ n "end @entries = {" zebra "= & gt;" पट्टियों के साथ अफ्रीकी भूमि जानवर "," मछली "= & gt;" जलीय जानवर " "सेब" = & gt; "फल"}    

टीएल; डीआर

आप इसे रूबी और उसके सहायक साझेदार का उपयोग करके यह वास्तव में कम और आसानी से पढ़ सकते हैं:

  @entries = {"zebra" = & gt; "पट्टियों के साथ अफ्रीकी भूमि जानवर", "मछली "= & Gt;" जलीय जानवर "," सेब "= & gt;" फल "} टेम्पलेट = '[% s] \"% s \ "\ n' @ प्रविष्टियां.ईच करें | कुंजी_और_मूल्य | डालता है टेम्पलेट% key_and_value अंत # = & gt; [ज़ेबरा] \ "पट्टियों के साथ अफ्रीकी भूमि जानवर \" \ n # [मछली] \ "जलीय जानवर \" \ n # [सेब] \ "फल \" \ n   

आपको क्या जानने की जरूरत है कि यह डबल कोट्स के अंदर है, बैकस्लैश का विशेष अर्थ है उदाहरण के लिए, "foo \ nbar" , \ n में एक नई पंक्ति में बदल दिया गया है:

  डालता है "foo \ nbar" # = & gt; Foo # bar   

डबल कोट्स के अंदर एक शाब्दिक बैकस्लैश का उपयोग करने के लिए, इसे बैकस्लैश से पहले होना चाहिए, जो इसे "बचता" है:

  puts "फू \\ nbar" # = & gt; Foo \ nbar   

दोहरे उद्धरण चिह्नों को दोहरे उद्धरण चिह्नों में उपयोग करने के लिए, आपको उन्हें उसी तरह से बचने की आवश्यकता है:

  डालता है "मेरे पास" भीतर "उद्धरण है "# = & Gt; सिंटेक्स त्रुटि: अप्रत्याशित TIDENTIFIER, इनपुट के अंत की उम्मीद # डालता है "मेरे पास" आंतरिक "उद्धरण" # ^ "मेरे पास \" आंतरिक \ "उद्धरण" # = & gt; मेरे पास "आंतरिक" उद्धरण है   

अगर हम [मछली] \ "जलीय जानवर \" \ n को प्रिंट करना चाहते हैं, तो हमें यह करना होगा: < / p>

  डालता है "[मछली] \\\" जलीय जानवर \\\ "\\ n" # = & gt; [मछली] \ "जलीय जानवर \" \ n   

हमने प्रत्येक \ के साथ \\ और प्रत्येक "< / कोड> के साथ \ ", जो बहुत गंदा लग रहा है रूबी के वैकल्पिक "प्रतिशत चिह्न" वाक्यविन्यास का उपयोग करने में मदद करने वाली बात पर:

  डालता है% {[मछली] \ \ "जलीय जानवर \\" \\ n} # = & gt; [मछली] \ "जलीय जानवर \" \ n   

हमें अभी भी \ को \\ से बदलना पड़ता है, क्योंकि बैकस्लैश अभी भी ज़रूरत हैं इस वाक्यविन्यास का उपयोग करने से बचने के लिए, लेकिन दोहरे उद्धरणों को बचने की आवश्यकता नहीं है, इसलिए यह थोड़ा अच्छा है। इसे एक साथ रखकर, हम इसे प्राप्त करते हैं:

  डालता है% {# {कुंजी}] \\ "# {मान} \\" \\ n}   < p> यह बुरा नहीं है, लेकिन यह अभी भी पढ़ने में विशेष रूप से आसान नहीं है। एक और विकल्प  sprintf  का उपयोग कर रहा है, जिससे हमें एक "टेम्प्लेट" स्ट्रिंग परिभाषित करने की सुविधा मिलती है और उसके बाद बाद में मूल्यों को प्रतिस्थापित कर देता है। चूंकि हमें प्रक्षेपण की आवश्यकता नहीं है ( # {...} ), हम इसके बजाय एकल उद्धरणों का उपयोग कर सकते हैं, जिसका मतलब है कि हम बैकस्लैश  और  बिना बचने के दोहरे उद्धरण चिह्नों का उपयोग कर सकते हैं उन्हें:  
  टेम्पलेट = '[% s] \ "% s \" \ n' str = sprintf (टेम्पलेट, "मछली", "जलीय जानवर") में स्ट्र # = & gt; [मछली] \ "जलीय जानवर \" \ n   

जैसा कि आप देख सकते हैं, "टेम्पलेट" में प्रत्येक % s को एक तर्क से प्रतिस्थापित किया जाता है sprintf । रूबी में sprintf के लिए एक विशेष शॉर्टकट है, जो कि % ऑपरेटर है:

  str = template% ["fish", "aquatic पशु "] कहते हैं स्ट्र # = & gt; [मछली] \ "जलीय जानवर \" \ n   

हम इसे विशेष रूप से साफ समाधान के लिए अपने लूप से जोड़ सकते हैं:

  @entries = {" ज़ेबरा "= & gt;" पट्टियों के साथ अफ्रीकी भूमि जानवर "," मछली "= & gt;" जलीय जानवर "," सेब "= & gt;" फल "} टेम्पलेट = '[% s] \"% s \ "\ n' @ Entries.each do | key_and_value | डालता है टेम्पलेट% key_and_value अंत # = & gt; [ज़ेबरा] \ "पट्टियों के साथ अफ्रीकी भूमि जानवर \" \ n # [मछली] \ "जलीय जानवर \" \ n [सेब] \ "फल \" \ n    < / html>

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -