ماڈیول اسباق (4/4)
ریجیکس کے ساتھ تقسیم کریں۔
String.prototype.split(separator) نہ صرف ایک مقررہ تار کو قبول کرتا ہے بلکہ
الگ کرنے والے کے طور پر بھی ایک regex۔ یہ اسے ٹوکنائز کرنے کا ایک طاقتور ٹول بناتا ہے۔
ساختی متن
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]ریجیکس /[,\s]+/ "کوما یا وائٹ اسپیس میں سے ایک یا زیادہ" سے میل کھاتا ہے: تقسیم
کسی بھی کمپاؤنڈ ڈیلیمیٹر پر تقسیم۔
عام معاملات
- قابل اجازت CSV:
text.split(/\s*,\s*/)کوما کے ارد گرد خالی جگہوں کو ہینڈل کرنے کے لیے۔ - بولی ٹوکنائزر: الفاظ نکالنے کے لیے
text.split(/\s+/)۔ - علیحدہ رکھیں: اگر ریجیکس میں کیپچرنگ گروپس ہیں، تو گروپوں کا مواد نتیجہ کی صف میں شامل ہے۔
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]() گروپ کے بغیر سیمی کالون غائب ہو جائے گا۔ (;) کے ساتھ آپ اسے رکھتے ہیں۔
نتیجے میں.
سپلٹ آپریشنز میں الگ کرنے والوں کو محفوظ کرنا
اگر آپ کیپچرنگ قوسین کے اندر اسپلٹ سیپریٹرز رکھتے ہیں، تو String.prototype.split کے آؤٹ پٹ میں الگ کرنے والوں کو خارج کرنے کے بجائے، حتمی صف میں عناصر کے طور پر شامل کیا جائے گا۔
اسے آزمائیں
ہر قابل اجازت CSV الگ کرنے والا تلاش کریں: اس کے ارد گرد اختیاری خالی جگہوں کے ساتھ ایک کوما۔ اس طرح آپ اسے فہرست کو ٹوکنائز کرنے کے لیے تقسیم میں استعمال کر سکتے ہیں۔
اشارہ دکھائیں۔
کسی بھی اختیاری جگہ کو جذب کرنے کے لیے کوما سے پہلے اور بعد میں \\s* استعمال کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
ہر 'اسپیسز یا سیمی کالون' کو الگ کرنے والا (ایک یا زیادہ) تلاش کریں۔ اس طرح تقسیم متن کو الفاظ میں بدل دے گی۔
اشارہ دکھائیں۔
یکجا \\s اور ; کلاس [\\s;] میں + کوانٹیفائر کے ساتھ۔
3 کوششوں کے بعد حل دستیاب ہے۔
اضافی چیلنج
Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.
اشارہ دکھائیں۔
Enclose the math operators character class in capture parentheses to preserve them in the split array.
3 کوششوں کے بعد حل دستیاب ہے۔