CodeGym /جاوا بلاگ /Random-UR /جاوا فرار کردار
John Squirrels
سطح
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 تمام یونیکوڈ کریکٹر کوڈز کی شکل " u +<hexadecimal digit>" ہوتی ہے۔ مثال کے طور پر، کاپی رائٹ کی معروف علامت کی نمائندگی 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