CodeGym /Java Blog /अनियमित /जावा एस्केप वर्ण
John Squirrels
स्तर 41
San Francisco

जावा एस्केप वर्ण

अनियमित ग्रुप में प्रकाशित
नमस्ते! पिछले पाठों में, हम पहले से ही टेक्स्ट स्ट्रिंग्स से परिचित हो चुके हैं, जिन्हें जावा में स्ट्रिंग क्लास द्वारा दर्शाया गया है। जैसा कि आपको शायद याद होगा, एक स्ट्रिंग वर्णों का एक क्रम है। ये वर्ण कोई भी अक्षर, अंक, विराम चिह्न आदि हो सकते हैं। एक स्ट्रिंग बनाते समय मुख्य बात यह है कि संपूर्ण अनुक्रम उद्धरण चिह्नों में संलग्न होना चाहिए:

public class Main {
   public static void main(String[] args) {
       String alex = new String ("My name is Alex. I'm 20!");
   }
}
लेकिन हम क्या करते हैं यदि हमें एक स्ट्रिंग बनाने की आवश्यकता होती है जिसमें स्वयं उद्धरण चिह्न हों? उदाहरण के लिए, मान लीजिए कि हम दुनिया को आपकी पसंदीदा किताब के बारे में बताना चाहते हैं:

public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is "Twilight" by Stephanie Meyer");
   }
}
ऐसा लगता है कि संकलक कुछ के बारे में नाखुश है! आपको क्या लगता है कि समस्या हो सकती है? और इसका उद्धरण चिह्नों से क्या लेना-देना है? वास्तव में, यह सब बहुत आसान है। कंपाइलर बहुत विशिष्ट तरीके से उद्धरण चिह्नों की व्याख्या करता है, अर्थात यह अपेक्षा करता है कि तार उनमें लिपटे हों। और हर बार जब संकलक देखता है ", यह अपेक्षा करता है कि उद्धरण चिह्न के बाद दूसरा उद्धरण चिह्न होगा, और यह कि उनके बीच की सामग्री संकलक द्वारा बनाई जाने वाली स्ट्रिंग का पाठ है। हमारे मामले में, उद्धरण चिह्न चारों ओर शब्द "ट्वाइलाइट" अन्य उद्धरण चिह्नों के अंदर हैं। जब संकलक पाठ के इस टुकड़े तक पहुँचता है, तो यह समझ में नहीं आता है कि यह क्या करने की उम्मीद है। उद्धरण चिह्न बताता है कि एक स्ट्रिंग बनाई जानी चाहिए। लेकिन संकलक यही है पहले सेकर रहा है! यहाँ क्यों है: सीधे शब्दों में कहें, तो संकलक भ्रमित हो जाता है कि वह क्या करने की उम्मीद करता है। "एक और उद्धरण चिह्न? क्या यह किसी प्रकार की गलती है? मैं पहले से ही एक स्ट्रिंग बना रहा हूं! या क्या मुझे एक और बनाना चाहिए? अर्घ! ...: /" हमें संकलक को यह बताने की जरूरत है कि उद्धरण चिह्न एक आदेश है ( "एक स्ट्रिंग बनाएँ!") और जब यह केवल एक वर्ण है ("उद्धरण चिह्नों के साथ" ट्वाइलाइट "शब्द प्रदर्शित करें!")। ऐसा करने के लिए, जावा कैरेक्टर एस्केपिंग का उपयोग करता है । यह एक विशेष प्रतीक का उपयोग करके पूरा किया जाता है: \ । इस प्रतीक को आम तौर पर "बैकस्लैश" कहा जाता है। जावा में, "एस्केप" होने के लिए एक चरित्र के साथ संयुक्त बैकस्लैश को नियंत्रण अनुक्रम कहा जाता है । उदाहरण के लिए, \"स्क्रीन पर उद्धरण चिह्न प्रदर्शित करने के लिए एक नियंत्रण क्रम है। आपके कोड में इस निर्माण का सामना करने पर, संकलक समझ जाएगा कि यह केवल एक उद्धरण चिह्न है जिसे स्क्रीन पर प्रदर्शित किया जाना चाहिए। आइए पुस्तक के साथ अपना कोड बदलने का प्रयास करें:

public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is \"Twilight\" by Stephanie Meyer");
       System.out.println(myFavoriteBook);
   }
}
हमने अपने दो "आंतरिक" उद्धरण चिह्नों से बचने के लिए \ का उपयोग किया है। आइए मुख्य() विधि चलाने का प्रयास करें... कंसोल आउटपुट:
My favorite book is "Twilight" by Stephanie Meyer
उत्कृष्ट! कोड ने ठीक वैसे ही काम किया जैसा हम चाहते थे! उद्धरण चिह्न किसी भी तरह से एकमात्र पात्र नहीं हैं जिनसे हमें बचने की आवश्यकता हो सकती है। मान लीजिए हम किसी को अपने काम के बारे में बताना चाहते हैं:

public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("My work files are in D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
एक और त्रुटि! क्या आप अनुमान लगा सकते हैं क्यों? एक बार फिर, संकलक समझ में नहीं आता कि क्या करना है। आखिरकार, कंपाइलर \ को नियंत्रण अनुक्रम के अलावा कुछ भी नहीं जानता है ! यह उम्मीद करता है कि बैकस्लैश के बाद एक निश्चित चरित्र होगा जिसे इसे किसी विशेष तरीके से व्याख्या करना चाहिए (जैसे उद्धरण चिह्न)। लेकिन, इस मामले में, \ के बाद साधारण अक्षर आते हैं। तो संकलक फिर उलझन में है। काय करते? बिल्कुल वही चीज़ जो पहले थी: हम अपने \ में बस एक और \ जोड़ते हैं !

public class Main {

   public static void main(String[] args) {

       String workFiles= new String ("My work files are in D:\\Work Projects\\java");
       System.out.println(workFiles);

   }
}
आइए देखें कि हमें क्या मिलता है: कंसोल आउटपुट:
My work files are in D:\Work Projects\java
बहुत अच्छा! संकलक तुरंत निर्धारित करता है कि \ सामान्य वर्ण हैं जिन्हें बाकी के साथ प्रदर्शित किया जाना चाहिए। जावा में काफी नियंत्रण अनुक्रम हैं। यहाँ पूरी सूची है:
  • \t - टैब।
  • \b - बैकस्पेस (पाठ में एक कदम पीछे या एक वर्ण को हटाना)।
  • \n - नई लाइन।
  • \r - कैरिज रिटर्न। ()
  • \f - फॉर्म फीड।
  • \' एकल उद्धरण।
  • \" दोहरा उद्धरण।
  • \\ बैकस्लैश।
इस प्रकार, यदि संकलक पाठ में \n का सामना करता है, तो यह समझता है कि यह केवल एक प्रतीक और कंसोल पर प्रदर्शित करने के लिए एक पत्र नहीं है, बल्कि "एक नई पंक्ति में जाने" के लिए एक विशेष आदेश है। उदाहरण के लिए, यह उपयोगी हो सकता है यदि हम किसी कविता का हिस्सा प्रदर्शित करना चाहते हैं:

public class Main {
   public static void main(String[] args) {
       String byron = new String ("She walks in beauty, like the night, \nOf cloudless climes and starry skies\nAnd all that's best of dark and bright\nMeet in her aspect and her eyes...");
       System.out.println(byron);
   }
}
यहाँ हमें क्या मिलता है: कंसोल आउटपुट:
She walks in beauty, like the night, 
Of cloudless climes and starry skies 
And all that's best of dark and bright 
Meet in her aspect and her eyes...
बस हम क्या चाहते थे! संकलक ने भागने के क्रम को पहचाना और 4 पंक्तियों पर कविता का एक अंश निकाला।

यूनिकोड वर्णों से बचें

एक अन्य महत्वपूर्ण विषय जिसके बारे में आपको भागने वाले पात्रों के संबंध में जानने की आवश्यकता है, वह है यूनिकोड। यूनिकोड एक मानक वर्ण एन्कोडिंग है जिसमें दुनिया की लगभग हर लिखित भाषा के प्रतीक शामिल हैं। दूसरे शब्दों में, यह विशेष कोड की एक सूची है जो किसी भी भाषा में लगभग हर वर्ण का प्रतिनिधित्व करती है! स्वाभाविक रूप से, यह एक बहुत लंबी सूची है और कोई भी इसे याद नहीं करता :) यदि आप जानना चाहते हैं कि यह कहां से आया और यह क्यों आवश्यक हो गया, तो इस जानकारीपूर्ण लेख को पढ़ें: https://docs.oracle.com/javase/tutorial/ i18n/text/unicode.html सभी यूनिकोड कैरेक्टर कोड का रूप " यू " है+<हेक्साडेसिमल अंक>"। उदाहरण के लिए, प्रसिद्ध कॉपीराइट प्रतीक u00A9 द्वारा दर्शाया गया है। इसलिए, यदि आपको जावा में पाठ के साथ काम करते समय इस वर्ण का उपयोग करने की आवश्यकता है, तो आप इसे अपने पाठ में बचा सकते हैं! उदाहरण के लिए, हम चाहते हैं सभी को सूचित करने के लिए कि CodeGym के पास इस पाठ का कॉपीराइट है:

public class Main {
   public static void main(String[] args) {
       System.out.println("\"Escaping characters\", \u00A9 2019 CodeGym");
   }
}
कंसोल आउटपुट:
"Escaping characters", © 2019 CodeGym
बढ़िया, यह सब काम कर गया! लेकिन यह केवल विशेष प्रतीकों के बारे में नहीं है! अलग-अलग भाषाओं में एक साथ लिखे गए टेक्स्ट को एनकोड करने के लिए आप यूनिकोड और एस्केप कैरेक्टर्स का इस्तेमाल कर सकते हैं। और यहां तक ​​कि एक ही भाषा की कई अलग-अलग बोलियों में लिखे गए पाठ भी!

public class Main {
   public static void main(String[] args) {

       System.out.println("\u004d\u0061\u006f \u005a\u0065\u0064\u006f\u006e\u0067 " + 

               "\u0028\u0054\u0072\u0061\u0064\u0069\u0074\u0069\u006f\u006e\u0061\u006c " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6fa4\u6771\u002c " +

               "\u0053\u0069\u006d\u0070\u006c\u0069\u0066\u0069\u0065\u0064 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6cfd\u4e1c\u002c " +

               "\u0050\u0069\u006e\u0079\u0069\u006e\u003a \u004d\u00e1\u006f " +

               "\u005a\u00e9\u0064\u014d\u006e\u0067\u0029 \u0077\u0061\u0073 \u0061 " +

               "\u0032\u0030\u0074\u0068\u002d\u0063\u0065\u006e\u0074\u0075\u0072\u0079 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065 " +

                "\u0073\u0074\u0061\u0074\u0065\u0073\u006d\u0061\u006e\u002c " +

               "\u0070\u006f\u006c\u0069\u0074\u0069\u0063\u0069\u0061\u006e\u002c " +

               "\u0061\u006e\u0064 \u0074\u0068\u0065 \u0063\u0068\u0069\u0065\u0066 " +

               "\u0074\u0068\u0065\u006f\u0072\u0065\u0074\u0069\u0063\u0069\u0061\u006e " +

               "\u006f\u0066 \u004d\u0061\u006f\u0069\u0073\u006d\u002e");
   }
}
कंसोल आउटपुट:
Mao Zedong (Traditional Chinese: 毛澤東, Simplified Chinese: 毛泽东, Pinyin: Máo Zédōng) was a 20th-century Chinese statesman, politician, and the chief theoretician of Maoism.
इस उदाहरण में, हमने अंग्रेजी और तीन (!) विभिन्न प्रकार के चीनी वर्णों - पारंपरिक, सरलीकृत और लैटिन (पिनयिन) से मिलकर एक स्ट्रिंग बनाने के लिए वर्ण कोड का उपयोग किया। और वह इसके बारे में बताता है! अब आप अपने काम में इस महान उपकरण का उपयोग करने के लिए पात्रों से बचने के बारे में पर्याप्त जानते हैं :) आपने जो सीखा है उसे सुदृढ़ करने के लिए, हम आपको हमारे जावा कोर्स से एक वीडियो सबक देखने का सुझाव देते हैं
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION