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);
   }
}
আমরা আমাদের দুটি "অভ্যন্তরীণ" উদ্ধৃতি চিহ্ন এড়াতে \ ব্যবহার করেছি। আসুন main() পদ্ধতি চালানোর চেষ্টা করি... কনসোল আউটপুট:
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 সমস্ত ইউনিকোড অক্ষর কোডের ফর্ম " u+<হেক্সাডেসিমাল ডিজিট>। উদাহরণস্বরূপ, সুপরিচিত কপিরাইট প্রতীক 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