JavaRush /جاوا بلاگ /Random-UR /فرار ہونے والے کردار

فرار ہونے والے کردار

گروپ میں شائع ہوا۔
ہیلو! پچھلے لیکچرز میں، ہم پہلے ہی سٹرنگز سے واقف ہو چکے ہیں، جن کی نمائندگی جاوا میں کلاس کرتی ہے String۔ جیسا کہ آپ کو شاید یاد ہے، ایک تار حروف کی ایک ترتیب ہے۔ علامتیں کچھ بھی ہو سکتی ہیں - حروف، اعداد، اوقاف کے نشانات وغیرہ۔ سب سے اہم بات یہ ہے کہ سٹرنگ بناتے وقت پوری ترتیب کوٹس میں بند کر دیا جاتا ہے:
public class Main {
   public static void main(String[] args) {
       String sasha = new String ("Меня зовут Саша, мне 20 лет!");
   }
}
لیکن کیا ہوتا ہے اگر ہمیں ایک سٹرنگ بنانے کی ضرورت ہو جس کے اندر اقتباسات بھی ہوں؟ مثال کے طور پر، ہم دنیا کو اپنی پسندیدہ کتاب کے بارے میں بتانا چاہتے ہیں:
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - "Сумерки" Стефани Майер");
   }
}
ایسا لگتا ہے کہ مرتب کرنے والا کسی چیز سے ناخوش ہے! آپ کے خیال میں خرابی کی وجہ کیا ہو سکتی ہے، اور یہ خاص طور پر اقتباسات کے ساتھ کیوں ہوئی؟ حقیقت یہ ہے کہ مرتب کرنے والا اقتباسات کو سختی سے متعین طریقے سے سمجھتا ہے، یعنی یہ ان میں ایک تار لپیٹتا ہے۔ اور جب بھی وہ کسی کردار کو دیکھتا ہے "، وہ توقع کرتا ہے کہ وہی کردار اس کے لیے پیروی کرے گا، اور ان کے درمیان اس لکیر کا متن ہوگا جو اسے، مرتب کرنے والے کو تخلیق کرنا چاہیے۔ ہمارے معاملے میں، لفظ "گودھولی" کے ارد گرد کوٹیشن مارکس دوسرے کوٹیشن مارکس کے اندر ہوتے ہیں ۔ اور جب مرتب کرنے والا متن کے اس ٹکڑے پر آتا ہے، تو اسے سمجھ نہیں آتا کہ وہ اس سے کیا چاہتے ہیں۔ ایسا لگتا ہے کہ ایک اقتباس ہے، جس کا مطلب ہے کہ اسے ایک تار بنانا چاہیے۔ لیکن وہ پہلے ہی کر رہا ہے! بعینہٖ یہی وجہ ہے۔ سیدھے الفاظ میں ، اس مقام پر مرتب کرنے والے کو غلط فہمی ہے کہ وہ اس سے کیا چاہتے ہیں۔ "ایک اور اقتباس؟ کیا یہ کسی قسم کی خرابی ہے؟ میں پہلے ہی ایک سٹرنگ بنا رہا ہوں! یا مجھے کوئی اور بنانی چاہیے؟ اہ...:/" ہمیں کمپائلر کو سمجھانا ہوگا جب کوئی اقتباس اس کے لیے کمانڈ ہو (" ایک تار بنائیں!")، اور جب یہ ایک سادہ علامت ہو ("گودھولی" کا لفظ کوٹیشن مارکس کے ساتھ ڈسپلے کریں!")۔ اس کو حاصل کرنے کے لیے، Java استعمال کرتا ہے character escaping ۔ یہ ایک خاص کردار کا استعمال کرتے ہوئے کیا جاتا ہے۔ اس طرح: \. عام زندگی میں اسے "بیک سلیش" کہا جاتا ہے، لیکن جاوا میں اسے (فرار ہونے والے کردار کے ساتھ مل کر) فرار کی ترتیب کہا جاتا ہے ۔ مثال کے طور پر، \"یہ یہاں ہے - اسکرین پر اقتباسات کو ظاہر کرنے کے لیے ایک کنٹرول ترتیب۔ آپ کے کوڈ کے اندر ایسی تعمیر کا سامنا کرنے کے بعد، مرتب کرنے والا سمجھے گا کہ یہ صرف ایک "اقتباس" کردار ہے جسے اسکرین پر ظاہر کرنے کی ضرورت ہے۔ آئیے کتاب کے ساتھ اپنے کوڈ کو تبدیل کرنے کی کوشش کریں:
public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - \"Сумерки\" Стефани Майер");
       System.out.println(myFavoriteBook);
   }
}
ہم ایک کے ساتھ دو "اندرونی" حوالوں سے بچ گئے \۔ آئیے طریقہ کو چلانے کی کوشش کریں main()... کنسول آؤٹ پٹ:

Моя любимая книга - "Сумерки" Стефани Майер
بہت اچھا، کوڈ نے بالکل ضرورت کے مطابق کام کیا! اقتباسات صرف اس معاملے سے بہت دور ہیں جہاں ہمیں کردار سے فرار کی ضرورت ہوسکتی ہے۔ مثال کے طور پر، ہم کسی کو اپنے کام کے بارے میں بتانا چاہتے تھے:
public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("Мои рабочие файлы лежат в папке D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
اور پھر ایک غلطی! کیا آپ پہلے ہی اندازہ لگا سکتے ہیں کہ اس کی وجہ کیا ہے؟ مرتب کرنے والے کو پھر سمجھ نہیں آرہی کہ کیا کرے۔ سب کے بعد، اس کے لئے ایک علامت ایک کنٹرول ترتیب\ سے زیادہ کچھ نہیں ہے ! یہ توقع کرتا ہے کہ سلیش کے بعد کچھ ایسا کردار ہونا چاہیے جس کی تشریح کسی خاص طریقے سے کرنی پڑے گی (مثال کے طور پر، کوٹیشن مارک)۔ تاہم، یہاں باقاعدہ حروف کی پیروی کرتے ہیں. تو مرتب کرنے والا پھر سے الجھا ہوا ہے۔ کیا کرنا ہے؟ بالکل پچھلی بار کی طرح ہی: ہمارے میں صرف ایک اور شامل کریں ! \\\
public class Main {

   public static void main(String[] args) {

       String workFiles= new String ("Мои рабочие файлы лежат в папке D:\\Work Projects\\java");
       System.out.println(workFiles);

   }
}
آئیے دیکھتے ہیں کہ اس سے کیا نکلتا ہے: کنسول آؤٹ پٹ:

Мои рабочие файлы лежат в папке D:\Work Projects\java
سپر! مرتب کرنے والے نے فوری طور پر طے کیا کہ یہ \عام علامتیں ہیں جن کو باقی کے ساتھ کنسول میں آؤٹ پٹ کرنے کی ضرورت ہے۔ جاوا میں فرار کے بہت سے سلسلے ہیں۔ یہاں ان کی مکمل فہرست ہے:
  • \t ٹیب کردار.
  • \b متن میں واپسی کیریکٹر ایک قدم پیچھے یا لائن میں ایک حرف کو حذف کرنا (بیک اسپیس)۔
  • \n نئی لائن کردار.
  • \r گاڑی کی واپسی کا کردار
  • \f صفحہ چلائیں.
  • \' واحد اقتباس کردار۔
  • \" ڈبل اقتباس کردار.
  • \\بیک سلیش کریکٹر (\)۔
اس طرح، اگر کمپائلر کو متن میں کسی علامت کا سامنا کرنا پڑتا ہے \n، تو وہ سمجھے گا کہ یہ صرف ایک علامت اور خط نہیں ہے جسے کنسول میں آؤٹ پٹ کرنے کی ضرورت ہے، بلکہ اس کے لیے ایک خاص کمانڈ - "ایک لائن بریک بنائیں!" مثال کے طور پر، یہ ہمارے لیے مفید ہو سکتا ہے اگر ہم کنسول میں نظم کا ایک ٹکڑا آؤٹ پٹ کرنا چاہتے ہیں:
public class Main {
   public static void main(String[] args) {
       String borodino = new String ("Скажи-ка, дядя, \nВедь не даром \nМосква, спаленная пожаром, \nФранцузу отдана?");
       System.out.println(borodino);
   }
}
اور یہ وہی ہے جو ہمیں ملا: کنسول آؤٹ پٹ:

Скажи-ка, дядя, 
Ведь не даром 
Москва, спаленная пожаром, 
Французу отдана?
بالکل وہی جو ضرورت ہے! مرتب کرنے والے نے فرار کی ترتیب کو پہچان لیا اور آیت کا ایک ٹکڑا 4 لائنوں میں نکالا۔

یونیکوڈ

ایک اور اہم موضوع جس کے بارے میں آپ کو کردار سے فرار کے سلسلے میں جاننے کی ضرورت ہے وہ ہے یونیکوڈ ۔ یونی کوڈ ایک کریکٹر انکوڈنگ کا معیار ہے جس میں دنیا کی تقریباً تمام تحریری زبانوں کے حروف شامل ہیں۔ دوسرے لفظوں میں، یہ خصوصی کوڈز کی فہرست ہے، جس میں کسی بھی زبان کے تقریباً کسی بھی کردار کے لیے ایک کوڈ ہوتا ہے! فطری طور پر، یہ فہرست بہت بڑی ہے اور کوئی بھی اسے دل سے نہیں سیکھتا :) اگر آپ اس میں دلچسپی رکھتے ہیں کہ یہ کہاں سے آیا اور اس کی ضرورت کیوں تھی، ہبراہبر پر معلوماتی مضمون پڑھیں ۔ یونی کوڈ میں تمام کریکٹر کوڈز "حرف u+ ہیکساڈیسیمل ہندسہ" ہیں۔ مثال کے طور پر، کاپی رائٹ کی مشہور علامت کوڈ u00A9 سے ظاہر ہوتا ہے ۔ لہذا، اگر آپ کو جاوا میں ٹیکسٹ کے ساتھ کام کرتے وقت اس کردار کو استعمال کرنے کی ضرورت ہے، تو آپ اسے اپنے متن میں چھوڑ سکتے ہیں! مثال کے طور پر، ہم سب کو بتانا چاہتے ہیں کہ یہ لیکچر JavaRush کی طرف سے کاپی رائٹ شدہ ہے:
public class Main {
   public static void main(String[] args) {
       System.out.println("Лекция \"Экранирование символов\", \u00A9 2018 Javarush");
   }
}
کنسول آؤٹ پٹ:

Лекция "Экранирование символов", © 2018 Javarush
بہت اچھا، سب کچھ کام کیا! لیکن خاص کردار سب کچھ نہیں ہوتے! یونیکوڈ اور کریکٹر ایسکیپنگ کا استعمال کرتے ہوئے، آپ ایک ہی وقت میں مختلف زبانوں میں لکھے گئے متن کو انکوڈ کر سکتے ہیں۔ اور یہاں تک کہ ایک ہی زبان کے کئی مختلف لہجوں میں!
public class Main {
   public static void main(String[] args) {

       System.out.println("\u041c\u0430\u0301\u043e " +
               "\u0426\u0437\u044d\u0434\u0443\u0301\u043d " +
               "\u0028\u043a\u0438\u0442\u002e \u0442\u0440\u0430\u0434\u002e " +
               "\u6bdb\u6fa4\u6771\u002c \u0443\u043f\u0440\u002e " +
               "\u6bdb\u6cfd\u4e1c\u002c \u043f\u0438\u043d\u044c\u0438\u043d\u044c\u003a " +
               "\u004d\u00e1\u006f \u005a\u00e9\u0064\u014d\u006e\u0067\u0029 " +
               "\u2014 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 " +
               "\u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 " +
               "\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 " +
               "\u0434\u0435\u044f\u0442\u0435\u043b\u044c \u0058\u0058 \u0432\u0435\u043a\u0430\u002c " +
               "\u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a " +
               "\u043c\u0430\u043e\u0438\u0437\u043c\u0430\u002e");
   }
}
کنسول آؤٹ پٹ:

Ма́о Цзэду́н (кит. трад. 毛澤東, упр. 毛泽东, пиньинь: Máo Zédōng) — китайский государственный и политический деятель XX века, главный теоретик маоизма.
اس مثال میں، کریکٹر کوڈز کو جانتے ہوئے، ہم نے سیریلک حروف تہجی اور تین (!) چینی حروف کی مختلف قسم کے اشارے پر مشتمل ایک سٹرنگ لکھا - کلاسیکی، آسان اور لاطینی (پنین)۔ یہ بنیادی طور پر ہے! اب آپ اپنے کام میں اس ٹول کو استعمال کرنے کے لیے کردار سے فرار ہونے کے بارے میں کافی جانتے ہیں :) اگر سب کچھ مکمل طور پر واضح نہیں ہے، تو میں آپ کو یہ مضمون پڑھنے کا مشورہ دیتا ہوں : یہ ایک اچھا اضافہ ہوگا۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION