String. prototype. replace()

  • 2021-08-10

متد ()replace یک رشته جدید را با یک، چند یا همه مطابقت های یک الگو که با یک جایگزین جایگزین شده است، برمی گرداند. الگو می تواند یک رشته یا یک RegExp باشد و جایگزین آن می تواند یک رشته یا تابعی باشد که برای هر مسابقه فراخوانی می شود. اگر الگو یک رشته باشد، فقط اولین رخداد جایگزین خواهد شد. رشته اصلی بدون تغییر باقی مانده است.

آن را امتحان کنید

نحو

مولفه های

می تواند یک رشته یا یک شی با متد Symbol. replace باشد - مثال معمولی عبارت منظم است. هر مقداری که متد Symbol. replace را نداشته باشد به یک رشته اجباری می شود.

می تواند یک رشته یا یک تابع باشد.

  • اگر یک رشته باشد، جایگزین رشته فرعی مطابق با الگو می شود. تعدادی از الگوهای جایگزین ویژه پشتیبانی می شود. بخش تعیین رشته به عنوان جایگزین را در زیر ببینید.
  • اگر یک تابع باشد، برای هر تطابق فراخوانی می شود و مقدار بازگشتی آن به عنوان متن جایگزین استفاده می شود. آرگومان های ارائه شده به این تابع در قسمت Specifying a function به عنوان جایگزینی در زیر توضیح داده شده است.

ارزش برگشتی

یک رشته جدید، با یک، چند یا همه موارد منطبق از الگو با جایگزینی مشخص شده جایگزین شده است.

شرح

این روش مقدار رشته ای را که فراخوانی می شود تغییر نمی دهد. یک رشته جدید برمی گرداند.

یک الگوی رشته فقط یک بار جایگزین می شود. برای انجام یک جستجوی سراسری و جایگزینی، از یک عبارت منظم با پرچم g استفاده کنید یا به جای آن از ()replaceAll استفاده کنید.

اگر الگو یک شی با متد Symbol. replace (شامل اشیاء RegExp) باشد، آن متد با رشته هدف و جایگزینی به عنوان آرگومان فراخوانی می شود. مقدار بازگشتی آن به مقدار بازگشتی ()place تبدیل می شود. در این مورد، رفتار ()replace به طور کامل توسط روش @@replace کدگذاری می‌شود - برای مثال، هر گونه ذکر "گروه‌های گرفتن" در توضیحات زیر در واقع عملکردی است که توسط RegExp. prototype[@@replace] ارائه شده است.

اگر الگوی یک رشته خالی باشد، جایگزینی به ابتدای رشته اضافه می شود.

یک regexp با پرچم g تنها موردی است که ()replace بیش از یک بار جایگزین می شود. برای اطلاعات بیشتر در مورد نحوه تعامل خواص regex (مخصوصاً پرچم چسبنده) با ()regex، به RegExp. prototype[@@replace]() مراجعه کنید.

تعیین رشته به عنوان جایگزین

رشته جایگزین می تواند شامل الگوهای جایگزین ویژه زیر باشد:

الگو درج می کند
$$ "$" را درج می کند.
$& رشته فرعی منطبق را درج می کند.
$` بخشی از رشته را که قبل از رشته فرعی منطبق است درج می کند.
$' بخشی از رشته را درج می کند که زیر رشته منطبق را دنبال می کند.
$n گروه ضبط N ( 1-indexed) را درج می کند که N یک عدد صحیح مثبت کمتر از 100 است.
$ گروه نامگذاری شده نامگذاری شده را درج می کند که نام آن نام گروه است.

$ n و $ فقط در صورتی در دسترس هستند که آرگومان الگوی یک شیء Regexp باشد. اگر این الگوی یک رشته باشد ، یا اگر گروه ضبط مربوطه در Regex وجود ندارد ، الگوی به عنوان یک لفظی جایگزین می شود. اگر این گروه حضور داشته باشد اما با هم مطابقت نداشته باشد (زیرا بخشی از یک اختلال است) ، آن را با یک رشته خالی جایگزین می کند.

تعیین یک تابع به عنوان جایگزینی

می توانید یک تابع را به عنوان پارامتر دوم مشخص کنید. در این حالت ، عملکرد پس از انجام مسابقه فراخوانی می شود. نتیجه عملکرد (مقدار بازگشت) به عنوان رشته جایگزینی استفاده می شود.

توجه: الگوهای جایگزینی ویژه فوق الذکر برای رشته های برگشتی از عملکرد جایگزین اعمال نمی شود.

عملکرد دارای امضای زیر است:

آرگومان های عملکرد به شرح زیر است:

بستر همسان(مطابق با $ و بالاتر است.)

رشته N که توسط یک گروه ضبط (از جمله گروه های ضبط نامگذاری شده) یافت می شود ، اولین آرگومان را برای جایگزینی () یک شیء REGEXP ارائه داد.(مطابق با 1 دلار ، 2 دلار و غیره در بالا است.) به عنوان مثال ، اگر الگوی باشد / (\ a+) (\ b+) / ، سپس p1 مسابقه برای \ a+ است ، و p2 مسابقه برای \ b+ است. اگر این گروه بخشی از یک اختلال باشد (به عنوان مثال "ABC" . Replace (/(a) | (b)/، جایگزین)) ، جایگزین بی نظیر تعریف نشده است.

جبران بستر همسان در کل رشته مورد بررسی قرار می گیرد. به عنوان مثال ، اگر کل رشته "ABCD" باشد ، و بستر همسان "قبل از میلاد" بود ، این استدلال 1 خواهد بود.

کل رشته مورد بررسی قرار می گیرد.

شیئی که کلیدهای آن نامهای گروهی استفاده شده است ، و مقادیر آن بخش های همسان هستند (در صورت عدم همسان مشخص نشده). فقط در صورتی که این الگوی شامل حداقل یک گروه ضبط باشد ، موجود است.

تعداد دقیق آرگومان ها به این بستگی دارد که آیا آرگومان اول یک شیء Regexp است - و اگر چنین است ، چند گروه ضبط دارد.

مثال زیر NewsTring را به "ABC - 12345 - #$*٪ 'تنظیم می کند:

اگر بیان منظم در پارامتر اول جهانی باشد ، چندین بار برای هر مسابقه کامل جایگزین می شود.

مثال ها

تعریف بیان منظم در جایگزین ()

در مثال زیر ، بیان منظم در replace () تعریف شده است و شامل پرچم موردی نادیده گرفته می شود.

این شب قبل از کریسمس.'.

توجه: برای توضیحات بیشتر در مورد عبارات منظم ، به راهنمای بیان منظم مراجعه کنید.

با استفاده از پرچم های جهانی و نادان با جایگزینی ()

جایگزینی جهانی فقط با یک بیان منظم انجام می شود. در مثال زیر ، بیان منظم شامل پرچم های موردی جهانی و نادیده گرفته شده است که اجازه می دهد () جایگزین هرگونه "سیب" در رشته با "پرتقال" شود.

این سیاهههای مربوط به این سیاههها گرد هستند و پرتقال آبدار است.

تعویض کلمات در یک رشته

اسکریپت زیر کلمات را در رشته تغییر می دهد. برای متن جایگزینی ، اسکریپت از گروه های ضبط و الگوهای جایگزینی 1 دلار و 2 دلار استفاده می کند.

این سیاههها "کروز ، ماریا".

با استفاده از یک تابع درون خطی که شخصیت های همسان را تغییر می دهد

در این مثال ، تمام وقایع حروف بزرگ در رشته به مورد پایین تبدیل می شوند و یک هیفن درست قبل از محل مسابقه درج می شود. نکته مهم در اینجا این است که قبل از اینکه به عنوان جایگزینی برگردانده شود ، عملیات اضافی در مورد همسان مورد نیاز است.

عملکرد جایگزینی قطعه قطعه را به عنوان پارامتر آن می پذیرد و از آن برای تبدیل پرونده و جمع آوری هیفن قبل از بازگشت استفاده می کند.

با توجه به StyleHyphenformat ('Bordertop') ، این "مرز-مرز" باز می گردد.

از آنجا که ما می خواهیم قبل از انجام جایگزینی نهایی ، نتیجه مسابقه را تغییر دهیم ، باید از یک تابع استفاده کنیم. این امر ارزیابی مسابقه را قبل از روش TolowerCase () انجام می دهد. اگر ما سعی کرده بودیم این کار را با استفاده از مسابقه بدون عملکرد انجام دهیم ، TolowerCase () هیچ تاثیری نخواهد داشت.

این امر به این دلیل است که "$ &". TolowerCase () ابتدا به عنوان یک رشته رشته (در نتیجه همان "$ &") قبل از استفاده از شخصیت ها به عنوان الگوی ارزیابی می شود.

جایگزینی درجه فارنهایت با معادل سلسبی خود

مثال زیر جایگزین درجه فارنهایت با درجه معادل سانتیگراد آن است. مدرک فارنهایت باید تعدادی باشد که با "F" پایان یابد. این تابع شماره سایثوس را با "C" به پایان می رساند. به عنوان مثال ، اگر شماره ورودی "212F" باشد ، عملکرد "100c" برمی گردد. اگر شماره "0F" باشد ، عملکرد "-17. 7777777777778c" باز می گردد.

تست بیان منظم برای هر شماره ای که با f به پایان می رسد ، بررسی می کند. تعداد درجه های فارنهایت از طریق پارامتر دوم آن ، P1 برای عملکرد در دسترس است. این تابع شماره سانتیگراد را بر اساس تعداد درجه های فارنهایت منتقل شده در یک رشته به عملکرد F2C () تنظیم می کند. F2C () سپس شماره Celsius را برمی گرداند. این تابع پرچم S /// E Perl را تقریبی می کند.

ایجاد یک جایگزین عمومی

فرض کنید ما می خواهیم جایگزینی ایجاد کنیم که داده های افست را به هر رشته همسان اضافه کند. از آنجا که عملکرد جایگزینی از قبل پارامتر افست را دریافت می کند ، اگر Regex از نظر آماری شناخته شده باشد ، بی اهمیت خواهد بود.

با این حال ، اگر بخواهیم با هر الگوی Regex کار کند ، این جایگزین کننده دشوار خواهد بود. جایگزینی متغیر است - تعداد استدلالهایی که دریافت می کند بستگی به تعداد گروه های ضبط موجود دارد. ما می توانیم از پارامترهای REST استفاده کنیم ، اما این همچنین باعث جمع آوری افست ، رشته و غیره در آرایه می شود. این واقعیت که ممکن است گروه ها بسته به هویت Regex منتقل شوند یا نباشند ، همچنین می تواند به طور کلی دانستن اینکه کدام استدلال با جبران مطابقت دارد ، دشوار می کند.

مثال افزودنی در بالا زمانی کار نمی کند که Regex حاوی یک گروه نامگذاری شده باشد ، زیرا در این حالت Args. at (-2) به جای جبران می تواند رشته باشد.

در عوض ، شما باید چند آرگومان آخر را بر اساس نوع استخراج کنید ، زیرا گروه ها یک شی هستند در حالی که رشته یک رشته است.< SPAN> فرض کنید ما می خواهیم جایگزینی ایجاد کنیم که داده های افست را به هر رشته همسان اضافه کند. از آنجا که عملکرد جایگزینی از قبل پارامتر افست را دریافت می کند ، اگر Regex از نظر آماری شناخته شده باشد ، بی اهمیت خواهد بود.

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.