কোনও স্ট্রিংয়ের সমস্ত উপস্থিতি কীভাবে প্রতিস্থাপন করবেন?


4374

আমার এই স্ট্রিং রয়েছে:

"Test abc test test abc test test test abc test test abc"

এরকম:

str = str.replace('abc', '');

abcউপরের স্ট্রিংয়ের মধ্যে কেবলমাত্র প্রথম উপস্থিতি সরিয়ে ফেলা হবে বলে মনে হচ্ছে ।

আমি এর সমস্ত উপস্থিতি কীভাবে প্রতিস্থাপন করতে পারি ?


5
abaএর ababaসাথে সমস্ত উপস্থিতি প্রতিস্থাপন করার সময় caআপনি কোন ফলাফলের প্রত্যাশা করবেন? caba? abca? cca?
রিনিয়ারপোস্ট 2'19

String.prototype.replaceAll()সাফারি ১৩.১ এ পাঠানো হয়েছে এবং এটি এখন ফায়ারফক্স নাইটলি এবং ক্রোম ডেভ এবং ক্যানারিতে রয়েছে এবং ফায়ারফক্স 77 Chrome এবং ক্রোম 85৫ এ পাঠানো হবে। এটি এমডিএন-তে এখনও নথিভুক্ত করা হয়নি, তবে github.com/tc39/proposal-string-replaceall#high-level-api একজন ব্যাখ্যাকারী রয়েছে: "যদি সার্চভ্যালু একটি স্ট্রিং হয়, সন্ধানভ্যালুয়ের সমস্ত উপস্থিতি String.prototype.replaceAllপ্রতিস্থাপন করে (যেন বা কোনও বিশ্বব্যাপী & সঠিকভাবে- অব্যাহত নিয়মিত অভিব্যক্তি ব্যবহার করা হয়েছিল)। যদি সার্চভ্যালু একটি অ-বিশ্বব্যাপী নিয়মিত প্রকাশ হয় তবে একটি ব্যতিক্রম ছুঁড়ে মারবে ".split(searchValue).join(replaceValue)String.prototype.replaceAll
সিডোশোবার্কার

উত্তর:


1602

দ্রষ্টব্য: কর্মক্ষমতা সমালোচনামূলক কোড এ ব্যবহার করবেন না।

একটি সাধারণ আক্ষরিক স্ট্রিংয়ের জন্য নিয়মিত প্রকাশের বিকল্প হিসাবে আপনি ব্যবহার করতে পারেন

str = "Test abc test test abc test...".split("abc").join("");

সাধারণ প্যাটার্নটি হ'ল

str.split(search).join(replacement)

এটি ব্যবহার replaceAllএবং নিয়মিত প্রকাশের চেয়ে কিছু ক্ষেত্রে দ্রুততর ব্যবহৃত হত তবে আধুনিক ব্রাউজারগুলিতে সেটি আর বলে মনে হয় না।

বেঞ্চমার্ক: https://jsperf.com/replace-all-vs-split-join

উপসংহার: আপনার যদি পারফরম্যান্সের সমালোচনামূলক ব্যবহারের কেস থাকে (যেমন, কয়েকশ স্ট্রিং প্রসেসিং), রিজেক্সপ পদ্ধতিটি ব্যবহার করুন। তবে বেশিরভাগ সাধারণ ব্যবহারের ক্ষেত্রে বিশেষ অক্ষর সম্পর্কে চিন্তা না করার পক্ষে এটি ভাল।


147
এটি আমাকে বিস্মিত করেছিল, যেমন আমি প্রত্যাশা করব যে এই পদ্ধতিটি আরও বেশি বস্তু বরাদ্দ করা হবে, আরও আবর্জনা তৈরি করবে, এবং এইভাবে আরও বেশি সময় লাগবে, কিন্তু যখন আমি আসলে একটি ব্রাউজারে পরীক্ষা করেছি তখন এই পদ্ধতিটি গ্রহণযোগ্য প্রতিক্রিয়াটির চেয়ে ধারাবাহিকভাবে প্রায় 20% দ্রুত ছিল। অবশ্যই ফলাফল পৃথক হতে পারে।
MgSam

42
আমি নিজে কৌতূহল ছিলাম এবং এটি সেট আপ করেছি: jsperf.com/replace-all-vs-split-join । দেখে মনে হচ্ছে যে অন্যান্য জাভাস্ক্রিপ্ট ইঞ্জিনের তুলনায় ভি 8 বিভাজন / অ্যারেতে যোগ দেওয়ার জন্য কেবল ক্রেজি।
ফবি

8
খুব সুন্দর - বিশেষ চরিত্রে যাওয়ার সময় খারাপ রেজিএক্স্পসের সম্ভাবনা থেকেও আপনাকে বাঁচায়। আমি কোনও বস্তুর সম্পত্তিতে "এটি সন্ধান করুন এবং এটি প্রতিস্থাপন করুন" এর জন্য জেনেরিক পতাকা যুক্ত করছি, তবে আমার যদি প্রতিস্থাপনের প্রয়োজন হয় তবে উদ্বিগ্ন ছিল। " বা "}" এবং ভুলে গেছি আমি 3 মাস পরে RegEx ব্যবহার করছিলাম!
tobriand

9
আর String.prototype হিসাবে: String.prototype.replaceAll = function(f,r){return this.split(f).join(r);}। ব্যবহার: "My string".replaceAll('st', '');"আমার রিং" উত্পাদন করে
ম্যাক্রোম্যান ২

8
এটিকে উত্পাদনে ব্যবহার না করার জন্য আমি সতর্কতার কোনও কারণ দেখতে পাচ্ছি না। আপনি একাধিক ঘটনাগুলি প্রতিস্থাপন করতে চান বলে এটি একটি রেজেক্স থেকে পালানোর চেয়ে বেশি হ্যাক নয়, তবে প্রথম স্থানে একটি রেজেেক্সের দরকার নেই। এই তথাকথিত "হ্যাক" কে একটি দুর্দান্ত replaceAllফাংশনে কেবল আবদ্ধ করুন এবং এটি অন্য যে কোনও কিছুর মতোই পঠনযোগ্য। কর্মক্ষমতা যেহেতু খারাপ নয়, তাই এই সমাধানটি এড়াতে কোনও কারণ নেই।
আপনি

4382
str = str.replace(/abc/g, '');

মন্তব্যের জবাবে:

var find = 'abc';
var re = new RegExp(find, 'g');

str = str.replace(re, '');

আপভোটের মন্তব্যের প্রতিক্রিয়া হিসাবে , আপনি এটিকে আরও সহজ করতে পারেন:

function replaceAll(str, find, replace) {
  return str.replace(new RegExp(find, 'g'), replace);
}

দ্রষ্টব্য: নিয়মিত অভিব্যক্তিগুলিতে বিশেষ (মেটা) অক্ষর থাকে এবং এগুলি findএই জাতীয় অক্ষরগুলি থেকে বাঁচতে প্রাক-প্রক্রিয়াজাতকরণ ছাড়াই উপরের ফাংশনে কোনও যুক্তি অন্ধভাবে পাস করা বিপজ্জনক । এই আচ্ছাদিত করা হয় মজিলা ডেভেলপার নেটওয়ার্ক এর উপর রেগুলার এক্সপ্রেশন জাভাস্ক্রিপ্ট গাইড যেখানে তারা নিম্নলিখিত ইউটিলিটি ফাংশন উপস্থিত (যা অন্তত দুইবার যেহেতু এই উত্তরটি মূলত লেখা হয়েছিল পরিবর্তিত হয়েছে, তাই নিশ্চিত সম্ভাব্য আপডেটের জন্য MDN প্রতিনিয়ত সাইট চেক না করা):

function escapeRegExp(string) {
  return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

সুতরাং replaceAll()উপরের ক্রিয়াকলাপটিকে আরও নিরাপদ করার জন্য , আপনি যদি এতে অন্তর্ভুক্ত করেন তবে এটি নীচে পরিবর্তন করা যেতে পারে escapeRegExp:

function replaceAll(str, find, replace) {
  return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}

4
আপনার নিজস্ব 'রিপ্লেসমল' পদ্ধতি প্রয়োগ না করেই "বাক্সের বাইরে" সাধনের একমাত্র উপায় নিয়মিত প্রকাশ আমি কেবল তাদের ব্যবহারের খাতিরে তাদের ব্যবহারের পরামর্শ দিচ্ছি না।
শান উজ্জ্বল

10
এই মন্তব্যটি থেকে এটি আমার নিজস্ব ফাংশন: function replaceAll(find, replace,str) { var re = new RegExp(find, 'g'); str = str.replace(re, replace); return str; }
উপভোটটি ক্লিক করুন

47
replaceAllবাস্তবায়নের প্রধান সতর্কতা হ'ল findমেটাচ্যাকার্টারগুলি থাকলে এটি কাজ করবে না ।
মার্টিন এন্ডার

1
@ সানব্রেট আপনি ঠিক বলেছেন আমি আপনার জাভাস্ক্রিপ্টটি পিএইচপি কোডে ব্যবহার করেছি যাতে পালাতে আমাকে অতিরিক্ত ব্যাকস্ল্যাশ যুক্ত করতে হয়েছিল। ভাঁজে আপনার কোড নিখুঁত। আমার চেক করা উচিত ছিল। দুঃক্ষিত jsfiddle.net/7y19xyq8
Onimusha


2437

সম্পূর্ণতার জন্য, আমি এটি করার জন্য কোন পদ্ধতিটি ব্যবহার করা উচিত তা সম্পর্কে ভাবতে শুরু করি। এই পৃষ্ঠায় অন্যান্য উত্তরগুলির পরামর্শ অনুসারে এটি করার জন্য দুটি উপায় রয়েছে।

দ্রষ্টব্য: সাধারণভাবে, জাভাস্ক্রিপ্টে অন্তর্নির্মিত প্রোটোটাইপগুলি প্রসারিত করার সাধারণত পরামর্শ দেওয়া হয় না। আমি স্ট্রিং প্রোটোটাইপটিতে কেবল উদাহরণের উদ্দেশ্যে এক্সটেনশন হিসাবে সরবরাহ করছি, Stringবিল্ট-ইন প্রোটোটাইপের উপর একটি অনুমানমূলক স্ট্যান্ডার্ড পদ্ধতির বিভিন্ন বাস্তবায়ন দেখিয়েছি ।


নিয়মিত এক্সপ্রেশন ভিত্তিক বাস্তবায়ন

String.prototype.replaceAll = function(search, replacement) {
    var target = this;
    return target.replace(new RegExp(search, 'g'), replacement);
};

বিভক্ত এবং যোগদান (ক্রিয়ামূলক) বাস্তবায়ন

String.prototype.replaceAll = function(search, replacement) {
    var target = this;
    return target.split(search).join(replacement);
};

দক্ষতার দিক থেকে নিয়মিত প্রকাশগুলি কীভাবে পর্দার আড়ালে কাজ করে সে সম্পর্কে খুব বেশি কিছু না জেনে, আমি বিভাজনের দিকে ঝুঁকে পড়েছি এবং পারফরম্যান্সের কথা চিন্তা না করে অতীতে বাস্তবায়নে যোগ দিয়েছি। আমি যখন আশ্চর্য হই যে কোনটি বেশি দক্ষ এবং কোন মার্জিনের দ্বারা, এটি অনুসন্ধানের অজুহাত হিসাবে ব্যবহার করেছি।

আমার ক্রোম উইন্ডোজ 8 মেশিনে, নিয়মিত এক্সপ্রেশন ভিত্তিক বাস্তবায়নটি দ্রুততম , বিভক্তকরণের সাথে 53% ধীর গতিতে কার্যকর হয় । মানে আমি ব্যবহৃত লোরেম আইপসাম ইনপুটটির জন্য নিয়মিত এক্সপ্রেশনগুলি দ্বিগুণ দ্রুত।

একে অপরের বিরুদ্ধে এই দুটি বাস্তবায়ন চলমান এই মানদণ্ডটি দেখুন ।


@ থমাসলডুক এবং অন্যান্যদের নীচে দেওয়া মন্তব্যে যেমন উল্লেখ করা হয়েছে, নিয়মিত অভিব্যক্তিতে বিশেষ অক্ষরsearch হিসাবে সংরক্ষিত কিছু অক্ষর থাকলে নিয়মিত প্রকাশ-ভিত্তিক বাস্তবায়নে সমস্যা হতে পারে । বাস্তবায়ন অনুমান করে যে কলার আগে থেকেই স্ট্রিংটি থেকে বাঁচবে বা কেবল নিয়মিত এক্সপ্রেশনস (এমডিএন) এর টেবিলে অক্ষরবিহীন স্ট্রিংগুলি পাস করবে ।

এমডিএন আমাদের স্ট্রিং এড়ানোর জন্য একটি বাস্তবায়নও সরবরাহ করে। এটিও যদি মান হিসাবে মানিক হিসাবে তৈরি করা হত RegExp.escape(str)তবে হায় আফসোস এটি বিদ্যমান নেই:

function escapeRegExp(str) {
  return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
}

আমরা escapeRegExpআমাদের String.prototype.replaceAllবাস্তবায়নের মধ্যেই ডাকতে পারি, তবে আমি নিশ্চিত নই যে এটি কতটা প্রভাব ফেলবে (সম্ভাব্য এমনকি এমন স্ট্রিংগুলির জন্যও যার জন্য পালানোর প্রয়োজন হয় না, যেমন সমস্ত বর্ণানুক্রমিক স্ট্রিংয়ের মতো)।


8
অ্যান্ড্রয়েড ৪.১-এ রেগএক্সপ্যাক্স পদ্ধতিটি 15% দ্রুত, তবে আপনি অনুসন্ধানের জন্য এক্সপ্রেশনটি এড়াচ্ছেন না, সুতরাং এই মানদণ্ডটি অসম্পূর্ণ।
andreszs

33
এই সমাধানটিতে একটি সমস্যা রয়েছে, যদি আপনি অনুসন্ধানের স্ট্রিংটিতে একটি রেজিএক্সপ্যাক এক্সপ্রেশনটির বিশেষ অক্ষর উপস্থিত থাকে তবে এগুলি ব্যাখ্যা করা হবে। আমি @ স্যান্ডি ইউনাইটেডল্ফ উত্তরটি প্রস্তাব করছি।
থমাস লেদুক

2
প্রথমটি এটি করবে: 'bla.bla'.replaceAll ('। ',' _ '); "_______"। দ্বিতীয়টি 'ব্লে_ব্লা' করবে, যা আপনি যা করতে চান তা সাধারণত।
রবকোহর

1
@ থমাস লেডুক দেখে মনে হচ্ছে আপনি উল্লিখিত ইস্যুটি ল্যাডাশ => লড্যাশ.com
বেক

1
এটিকে ভবিষ্যতের দর্শকদের জন্য এখানে রেখে দেওয়া কেন দেশীয় অবজেক্টটি প্রসারিত করা কেন খারাপ ধারণা তাও ভাবছেন: স্ট্যাকওভারফ্লো
বেন কুপার

690

gপতাকা সেট সহ একটি নিয়মিত প্রকাশটি সমস্ত প্রতিস্থাপন করবে:

someString = 'the cat looks like a cat';
anotherString = someString.replace(/cat/g, 'dog');
// anotherString now contains "the dog looks like a dog"

এখানেও দেখুন


15
কিন্ডা নির্বোধ আমি মনে করি, তবে একাধিক প্রতিস্থাপনের একমাত্র উপায় জেএস গ্লোবাল রেজেেক্স।
মাইক

5
ভাল প্রযুক্তিগতভাবে আপনি var sourceTextউদাহরণের সংখ্যা গণনা করে লুপ করতে পারেন ( numOfInstances) ব্যবহার করে substringবা বিভক্ত করতে পারেন এবং thatWhichYouWantToReplaceতারপরে দৈর্ঘ্য (অন্যান্য কৌশলগুলির মধ্যে) গণনা করতে পারেন for (var i = 0; i < numOfInstances; i++){ sourceText = sourceText.replace('thatWhichYouWantToReplace', '');} বা আরও সহজ কিছুক্ষণ লুপ ব্যবহার করুন ( while sourceText.indexOf(thatWhichYouWantToReplace > -1){ sourceText = sourceText.replace(...)) তবে আপনি কেন চান তা আমি দেখতে পাচ্ছি না ব্যবহার /gকরা এত সহজ এবং সম্ভবত আরও পারফরম্যান্ট যখন এটি যেভাবে না ।
জারগোল্ড

@ জারগোল্ড আপনি প্রতিস্থাপনের পরেও সমস্ত দৃষ্টান্ত প্রতিস্থাপন করেছেন, এটি মোটামুটি সাধারণ গোচা তা নিশ্চিত করার জন্য আপনি একটি লুপ করতে চাইবেন। নীচের আমার উত্তর দেখার stackoverflow.com/a/26089052/87520
SamGoody

109

গৃহীত উত্তরের উপর ভিত্তি করে এখানে একটি স্ট্রিং প্রোটোটাইপ ফাংশন রয়েছে:

String.prototype.replaceAll = function (find, replace) {
    var str = this;
    return str.replace(new RegExp(find, 'g'), replace);
};

সম্পাদনা

যদি আপনার findমধ্যে বিশেষ অক্ষর থাকে তবে আপনার সেগুলি এড়াতে হবে:

String.prototype.replaceAll = function (find, replace) {
    var str = this;
    return str.replace(new RegExp(find.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), replace);
};

ফিডল: http://jsfiddle.net/cdbzL/


5
তবে যদি রেগেজেসের findমতো চরিত্রগুলি থাকে .বা এর $বিশেষ অর্থ থাকে তবে কী হবে ?
কলম্ব

1
@ ক্যালাম সেই ক্ষেত্রে আপনাকে নিজের সন্ধানের পরিবর্তনশীলটি পালাতে হবে (উপরে সম্পাদনা দেখুন)।
জেসাল


জেসাল, আমি যে স্ট্রিং প্রতিস্থাপনের সমস্যার মুখোমুখি হয়েছি তার এটি একটি দুর্দান্ত সমাধান এবং এটি দৃশ্যত জাভাস্ক্রিপ্টে স্ট্রিংয়ের "অপরিবর্তনযোগ্যতা" কাটিয়ে উঠেছে। আপনি বা অন্য কেউ ব্যাখ্যা করতে পারেন যে এই প্রোটোটাইপ ফাংশনটি স্ট্রিংয়ের অপরিবর্তনীয়তাকে ওভাররাইড করে কীভাবে? এই করে কাজ; আমি এটি উদ্ভুত এই আনুষাঙ্গিক প্রশ্নটি বুঝতে চাই।
টম

1
@ টম: এটি একেবারেই অপরিবর্তনীয়তা কাটিয়ে উঠতে পারে না : var str = thisঅপরিবর্তনীয় স্ট্রিংয়ের দ্বিতীয় রেফারেন্স তৈরি করে, যার replaceপদ্ধতিটি প্রয়োগ করা হয়, যার ফলে নতুন পরিবর্তনযোগ্য স্ট্রিং ফিরে আসে । এই প্রোটোটাইপ ফাংশনগুলি একটি নতুন অপরিবর্তনীয় স্ট্রিং ফিরিয়ে দেয়, যদি তা না হয় তবে আপনি লিখতে সক্ষম হবেন someStrVar.replaceAll('o', '0');এবং someStrVarপরিবর্তিত হবেন। পরিবর্তে, আপনাকে লিখতে হবে someStrVar = someStrVar.replaceAll('o', '0');<- নতুন অপরিবর্তনীয় স্ট্রিং ধরে রাখতে ভেরি সেট করতে পুনরায় সাইন ইন করুন । এর আশেপাশে কোনও উপায় নেই কনসোলে চেষ্টা করুন:x = 'foobar'; x.replaceAll('o', '0'); x;
ইলিয়াস ভ্যান ওটেজেম

87

হালনাগাদ:

একটি আপডেটের জন্য এটি কিছুটা দেরি হয়ে গেছে, তবে যেহেতু আমি এই প্রশ্নটিতে কেবল হোঁচট খেয়েছি এবং লক্ষ্য করেছি যে আমার আগের উত্তরটি সেভাবে নয় যা আমি খুশি। যেহেতু প্রশ্নটি একটি শব্দ প্রতিস্থাপনের সাথে জড়িত, এটি অবিশ্বাস্য কেউ শব্দের সীমা ব্যবহার করার কথা ভাবেনি ( \b)

'a cat is not a caterpillar'.replace(/\bcat\b/gi,'dog');
//"a dog is not a caterpillar"

এটি একটি সরল রেজেক্স যা বেশিরভাগ ক্ষেত্রে শব্দের অংশগুলি প্রতিস্থাপন এড়িয়ে চলে। তবে, একটি ড্যাশ -এখনও শব্দের সীমা হিসাবে বিবেচিত হয়। সুতরাং এই পরিস্থিতিতে স্ট্রিং প্রতিস্থাপন এড়াতে শর্তসাপেক্ষ ব্যবহার করা যেতে পারে cool-cat:

'a cat is not a cool-cat'.replace(/\bcat\b/gi,'dog');//wrong
//"a dog is not a cool-dog" -- nips
'a cat is not a cool-cat'.replace(/(?:\b([^-]))cat(?:\b([^-]))/gi,'$1dog$2');
//"a dog is not a cool-cat"

মূলত, এই প্রশ্নটি এখানে প্রশ্নের মতোই: জাভাস্ক্রিপ্ট "" "" "" এর সাথে "" "প্রতিস্থাপন করে

@ মাইক, আমি সেখানে যে উত্তর দিয়েছি তা পরীক্ষা করে দেখুন ... রেজিএক্সপ্যাক্স এ থেকে দূরে কোনও সাবস্ক্রিটিংয়ের একাধিক ঘটনা প্রতিস্থাপনের একমাত্র উপায় নয়। নমনীয় ভাবুন, ভাবি ভাবেন!

var newText = "the cat looks like a cat".split('cat').join('dog');

বিকল্পভাবে, শব্দের যন্ত্রাংশ প্রতিস্থাপন প্রতিরোধ করার জন্য - অনুমোদিত উত্তরগুলিও তা করবে! আপনি নিয়মিত প্রকাশগুলি ব্যবহার করে এই সমস্যাটি ঘটাতে পারেন, আমি স্বীকার করি যে কিছুটা জটিল এবং এর উত্স হিসাবে, একটি বাচ্চার ধীর গতিতে:

var regText = "the cat looks like a cat".replace(/(?:(^|[^a-z]))(([^a-z]*)(?=cat)cat)(?![a-z])/gi,"$1dog");

আউটপুট গ্রহণযোগ্য উত্তরের সমান, তবে, এই স্ট্রিংয়ে / ক্যাট / জি এক্সপ্রেশন ব্যবহার করে:

var oops = 'the cat looks like a cat, not a caterpillar or coolcat'.replace(/cat/g,'dog');
//returns "the dog looks like a dog, not a dogerpillar or cooldog" ?? 

ওফ, সত্যিই এটি আপনি যা চান তা সম্ভবত নয়। তাহলে কী? আইএমএইচও, একটি রেইজেক্স যা কেবলমাত্র 'বিড়ালকে' শর্তাধীনভাবে প্রতিস্থাপন করে। (যেমন কোনও শব্দের অংশ নয়) যেমন:

var caterpillar = 'the cat looks like a cat, not a caterpillar or coolcat'.replace(/(?:(^|[^a-z]))(([^a-z]*)(?=cat)cat)(?![a-z])/gi,"$1dog");
//return "the dog looks like a dog, not a caterpillar or coolcat"

আমার অনুমান, এটি আপনার প্রয়োজনগুলি পূরণ করে। এটি অবশ্যই ফুলপ্রুফ নয়, তবে আপনাকে শুরু করার জন্য এটি যথেষ্ট হওয়া উচিত। আমি এই পৃষ্ঠাগুলিতে আরও কিছু পড়ার পরামর্শ দেব। আপনার নির্দিষ্ট চাহিদা মেটাতে এটি এই অভিব্যক্তিটি নিখুঁত করতে কার্যকর প্রমাণিত হবে।

http://www.javascriptkit.com/jsref/regexp.shtml

http://www.regular-expressions.info


চূড়ান্ত সংযোজন:

এই প্রশ্নটি এখনও প্রচুর মতামত পেয়েছে বলে আমি ভেবেছিলাম যে আমি .replaceকলব্যাক ফাংশনটির সাথে ব্যবহৃত একটি উদাহরণ যুক্ত করব । এই ক্ষেত্রে এটি নাটকীয়ভাবে অভিব্যক্তিটিকে সহজতর করে এবং আরও বেশি নমনীয়তা সরবরাহ করে, যেমন সঠিক মূলধনকে প্রতিস্থাপন করা বা উভয় catএবং একসাথে প্রতিস্থাপনের মতো cats:

'Two cats are not 1 Cat! They\'re just cool-cats, you caterpillar'
   .replace(/(^|.\b)(cat)(s?\b.|$)/gi,function(all,char1,cat,char2)
    {
       //check 1st, capitalize if required
       var replacement = (cat.charAt(0) === 'C' ? 'D' : 'd') + 'og';
       if (char1 === ' ' && char2 === 's')
       {//replace plurals, too
           cat = replacement + 's';
       }
       else
       {//do not replace if dashes are matched
           cat = char1 === '-' || char2 === '-' ? cat : replacement;
       }
       return char1 + cat + char2;//return replacement string
    });
//returns:
//Two dogs are not 1 Dog! They're just cool-cats, you caterpillar

আমি মনে করি অতিরিক্ত আকর্ষণীয় অংশটি নীচে রাখা উচিত। PS: আমি এখনই লক্ষ্য করেছি যে প্রথম লাইনের অর্ধেকটি অঞ্চল ছাড়িয়ে গেছে, আমাকে এটি ঠিক করার অনুমতি দিন!

69

বিশ্বব্যাপী নিয়মিত প্রকাশের সাথে ম্যাচ:

anotherString = someString.replace(/cat/g, 'dog');

60

একক সময় ব্যবহার প্রতিস্থাপনের জন্য:

var res = str.replace('abc', "");

একাধিকবার প্রতিস্থাপনের জন্য ব্যবহার করুন:

var res = str.replace(/abc/g, "");

কারও জন্য replace n প্রতিস্থাপন করা দরকার, আপনি এটি এর মতো করতে পারেন:replace(/\n/g, '<br/>')
ফান ভ্যান লিনহ

58

এগুলি সর্বাধিক সাধারণ এবং পঠনযোগ্য পদ্ধতি।

var str = "Test abc test test abc test test test abc test test abc"

পদ্ধতি 1:

str = str.replace(/abc/g, "replaced text");

পদ্ধতি 2:

str = str.split("abc").join("replaced text");

পদ্ধতি 3:

str = str.replace(new RegExp("abc", "g"), "replaced text");

পদ্ধতি 4:

while(str.includes("abc")){
    str = str.replace("abc", "replaced text");
}

আউটপুট:

console.log(str);
// Test replaced text test test replaced text test test test replaced text test test replaced text

44
str = str.replace(/abc/g, '');

অথবা এখান থেকে প্রতিস্থাপন সমস্ত ফাংশন চেষ্টা করুন:

অন্তর্নির্মিত অবজেক্টগুলিকে প্রসারিত দরকারী জাভাস্ক্রিপ্ট পদ্ধতিগুলি কী কী?

str = str.replaceAll('abc', ''); OR

var search = 'abc';
str = str.replaceAll(search, '');

সম্পাদনা করুন: প্রতিস্থাপনের সমস্ত উপলভ্যতা সম্পর্কে স্পষ্টতা

'প্রতিস্থাপন' পদ্ধতিটি স্ট্রিংয়ের প্রোটোটাইপে যুক্ত করা হয়। এর অর্থ এটি সমস্ত স্ট্রিং অবজেক্ট / আক্ষরিক জন্য উপলব্ধ।

যেমন

var output = "test this".replaceAll('this', 'that');  //output is 'test that'.
output = output.replaceAll('that', 'this'); //output is 'test this'

2
প্রোটোটাইপ ব্যবহার করছেন না তাদের জন্য আপনি কি সেখানে প্রতিস্থাপনের সমস্ত () ফাংশনটি আবার লিখতে পারেন?
আপভোটটি ক্লিক করুন

@ ক্লিক আপভোট .... আপনি প্রোটোটাইপ ব্যবহার করছেন, এটি সমস্ত জেএস অবজেক্টের অংশ। আমি মনে করি আপনি জেএস লাইব্রেরির প্রোটোটাইপ.জেএস সম্পর্কে ভাবছেন।
শেঠ

সেট, একটু সংশোধন। আপনি যদি কোনও প্রোটোটাইপে পদ্ধতি যুক্ত করেন তবে এটি সেই ধরণের সমস্ত সামগ্রীর জন্য উপলব্ধ। ReplceAll পদ্ধতিটি স্ট্রিং প্রোটোটাইপের সাথে যুক্ত করা হয়েছিল এবং এটি সমস্ত স্ট্রিং অবজেক্টের জন্য কাজ করা উচিত।
SolutionYogi

@ সমাধানযোগি - হ্যাঁ, আমি এর আগে প্রোটোটাইপ (সঠিকভাবে) ব্যবহার করেছি। আমি প্রোটোটাইপ.জেএস (সম্ভবত ভুলভাবে?) বোঝাতে চেয়েছিলাম "প্রোটোটাইপ ব্যবহার না করা" সম্পর্কে ওপির মন্তব্যে কেবল সম্বোধন করছিলাম। জাভাস্ক্রিপ্ট অবজেক্টের একটি প্রোটোটাইপ রয়েছে বলে আমি চেষ্টা করার সময় আমার "প্রোটোটাইপ" বলা উচিত ছিল। সুতরাং, ওপি ইতিমধ্যে 'পরোক্ষ' পদ্ধতিতে 'প্রোটোটাইপ' ব্যবহার করছিল। অপ্রত্যক্ষ এখানে ভুল শব্দ হতে পারে তবে আমি ক্লান্ত তাই ক্লান্ত।
শেঠ

41

ব্যবহার RegExpমধ্যে জাভাস্ক্রিপ্ট আপনার জন্য কাজ করতে পারে, সহজভাবে কোড নিচে ভালো কিছু করতে ভুলবেন না /gজন্য যা standout পর বিশ্বব্যাপী :

var str ="Test abc test test abc test test test abc test test abc";
str = str.replace(/abc/g, '');

আপনি যদি পুনঃব্যবহারের কথা ভাবেন, তবে আপনার জন্য এটি করার জন্য একটি ফাংশন তৈরি করুন, তবে এটি কেবলমাত্র এক লাইনের ফাংশন হিসাবে প্রস্তাবিত নয়, আবার যদি আপনি এটি ভারীভাবে ব্যবহার করেন তবে আপনি এই জাতীয় কিছু লিখতে পারেন:

String.prototype.replaceAll = String.prototype.replaceAll || function(string, replaced) {
  return this.replace(new RegExp(string, 'g'), replaced);
};

এবং কেবল নীচের মত এটি আপনার কোডগুলিতে ব্যবহার করুন:

var str ="Test abc test test abc test test test abc test test abc";
str = str.replaceAll('abc', '');

তবে যেমনটি আমি আগে উল্লেখ করেছি, এটি লিখিতভাবে লেখার জন্য বা পারফরম্যান্সের ক্ষেত্রে একটি বিশাল পার্থক্য তৈরি করবে না, কেবল ফাংশনটি ক্যাশে করলে দীর্ঘতর স্ট্রিংগুলিতে কিছুটা দ্রুত পারফরম্যান্স এবং আপনি যদি পুনরায় ব্যবহার করতে চান তবে DRY কোডের একটি ভাল অনুশীলনকে প্রভাবিত করতে পারে।


40

বলুন যে আপনি সমস্ত 'abc' কে 'x' দিয়ে প্রতিস্থাপন করতে চান:

let some_str = 'abc def def lom abc abc def'.split('abc').join('x')
console.log(some_str) //x def def lom x x def

আমি স্ট্রিং প্রোটোটাইপ পরিবর্তন করার চেয়ে আরও সাধারণ কিছু সম্পর্কে চিন্তা করার চেষ্টা করছিলাম।


1
সহজ, সহজ এবং সম্ভবত সবচেয়ে পারফরম্যান্স বিকল্প: দুর্দান্ত উত্তর।
মেশিনগোস্ট

আসলে, আমি ব্যক্তিগতভাবে এটি মেট্রিক-এড না করার সময়, বিভাজন / যোগ দেওয়া সাধারণত একটি খুব পারফরম্যান্ট সমাধান।
মেশিনঘোস্ট

1
এটি এমনকি ক্রোমে রয়েছে, ফায়ারফক্সের উপর 100% দ্রুত এবং আইই-তে 50% ধীর ...: jsperf.com/replace-regex-split-join
অলিভিয়ার


32

একক উদ্ধৃতি প্রতিস্থাপন:

function JavaScriptEncode(text){
    text = text.replace(/'/g,'&apos;')
    // More encode here if required

    return text;
}

2
আমি স্ট্রিংগুলি প্রতিস্থাপন করতে দ্বিতীয় লাইনটি কীভাবে পরিবর্তন করতে পারি? এটি কাজ করে না: পাঠ্য = পাঠ্য.রেপ্লেস ('আরে', 'হ্যালো'); কোন ধারণা?
স্টিফান Đorđević

2
অবশ্যই স্টেফান, এখানে কোড ... পাঠ্য = পাঠ্য.রেজ (/ হে / জি, 'হ্যালো');
ক্রিস রোস্টে

26

// নম্বরটি না আসা পর্যন্ত এটিকে লুপ করুন 0 বা কেবল অনুলিপি / পেস্ট করুন

    function replaceAll(find, replace, str) 
    {
      while( str.indexOf(find) > -1)
      {
        str = str.replace(find, replace);
      }
      return str;
    }

23
এই পদ্ধতিটি বিপজ্জনক, এটি ব্যবহার করবেন না। যদি প্রতিস্থাপনের স্ট্রিংয়ে অনুসন্ধান কীওয়ার্ড থাকে, তবে একটি অসীম লুপ আসবে। খুব কমপক্ষে, ফলাফলটি .indexOfএকটি ভেরিয়েবলের মধ্যে সঞ্চয় করুন এবং এই পরিবর্তনশীলটিকে দ্বিতীয় প্যারামিটার .indexOf(কীওয়ার্ডের বিয়োগ দৈর্ঘ্য, প্রতিস্থাপনের স্ট্রিংয়ের দৈর্ঘ্য) হিসাবে ব্যবহার করুন।
রব ডব্লু

আমি প্রথমে একটি বিরক্ত ইউনিকোড চর দিয়ে অনুসন্ধানের প্যাটার্নটি প্রতিস্থাপনের বিষয়ে ভাবছি, এর মধ্যে আমরা নিশ্চিত যে এটি ইনপুট স্ট্রিংটিতে ব্যবহৃত হয়নি। ব্যক্তিগত অঞ্চলে ইউ + ই 1000 এর মতো। এবং তারপরে এটি টার্গেটে ফিরে। আমি এখানে এটি তৈরি করেছি। । আমি নিশ্চিত নই যে ভাল আইডিয়া চালাচ্ছে কিনা।
লাক্স

26
str = str.replace(new RegExp("abc", 'g'), "");

উপরের উত্তরগুলির চেয়ে আমার পক্ষে আরও ভাল কাজ করেছে। সুতরাং new RegExp("abc", 'g')একটি RegExp তৈরি করে 'g'যা পাঠ্যের ( "abc") এর সমস্ত উপস্থিতি ( পতাকা) এর সাথে মেলে । দ্বিতীয় অংশটি আপনার ক্ষেত্রে খালি স্ট্রিং ( "") এ পরিবর্তিত হয় । strস্ট্রিংটি হ'ল এবং আমাদের এটিকে ওভাররাইড করতে হবে replace(...)ঠিক যেমন ফলাফল প্রদান করে তবে ওভাররাইড হয় না। কিছু ক্ষেত্রে আপনি এটি ব্যবহার করতে চাইতে পারেন।


যদিও এই কোড স্নিপেট একটি সমাধান সহ সমাধান হতে পারে, সত্যিই আপনার পোস্টের গুণমান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না।
yivi

হ্যাঁ তুমি সঠিক. এখনো যোগ করেনি। মূল প্রশ্নের উত্তর দেওয়ার জন্য এটি সম্পাদনাও করেছেন :)
csomakk

দ্রষ্টব্য: রেজেক্সে জি পতাকাটির অর্থ এটি বিশ্বব্যাপী পতাকা যা সমস্ত উপস্থিতির সাথে মিলবে
ফার্স্টপোস্ট কমেন্টার

25

এটি দ্রুততম সংস্করণ যা নিয়মিত এক্সপ্রেশন ব্যবহার করে না

সংশোধিত jsperf

replaceAll = function(string, omit, place, prevstring) {
  if (prevstring && string === prevstring)
    return string;
  prevstring = string.replace(omit, place);
  return replaceAll(prevstring, omit, place, string)
}

এটি বিভক্তির চেয়ে প্রায় দ্বিগুণ দ্রুত এবং পদ্ধতিতে যোগদান করুন।

এখানে একটি মন্তব্যে নির্দেশিত হিসাবে, আপনার omitচলকটি placeযেমন অন্তর্ভুক্ত থাকে তবে এটি কাজ করবে না : replaceAll("string", "s", "ss")কারণ এটি সর্বদা শব্দের অন্য একটি ঘটনাকে প্রতিস্থাপন করতে সক্ষম হবে।

আমার পুনরাবৃত্তির প্রতিস্থাপনে বৈকল্পিকগুলির সাথে আরও একটি জেএসপ্পিফ রয়েছে যা আরও দ্রুত গতিতে চলে যায় ( http://jsperf.com/replace-all-vs-split-join/12 )!

  • জুলাই 27 শে 2017 আপডেট করুন: দেখে মনে হচ্ছে সবেমাত্র প্রকাশিত ক্রোম 59-এ RegExp এর দ্রুততম পারফরম্যান্স রয়েছে।

আমি আপনার সমাধানটি পছন্দ করেছিলাম ... আমি আপনাকে +10 দিতে পারতাম তবে আমার +1 এখানে রয়েছে। আমি মনে করি যে আপনি যে সাব-স্ট্রিংটি প্রতিস্থাপিত হয়েছিল তার সূচকটি সংরক্ষণ করতে পারবেন এবং সেই অনন্ত লুপ সমস্যা এড়াতে যদি কোনও নিম্ন সূচীতে কোনও মিল খুঁজে পাওয়া যায় তবে পরবর্তীটিতে যেতে পারেন। আমি পারফরম্যান্স সম্পর্কে মন্তব্য করতে পারছি না কারণ আমি এটি পরীক্ষা করে দেখিনি তবে কেবলমাত্র আমার 2 সেন্ট এই শ্রেষ্ঠত্বের অংশে।
ফ্র0zenFyr

@ ফ্র0জেনফায়ার যদি আপনি যাচাই করতে চান তবে ওমিট স্থানে রয়েছে কিনা (অসীম লুপ প্রতিরোধে) আপনি if(place.replace(omit) === omit) {নো ম্যাচের মতো শর্তযুক্ত করতে পারেন , তাই লুপ } else {ম্যাচ রিপ্লেস ব্যবহার করা নিরাপদ তাই বিভাজনের মতো আলাদা পদ্ধতি ব্যবহার করুন এবং যোগ দিন}
কোল লরেন্স

হুম .. তবে দুটি সমাধানের সংমিশ্রণটি কী? আমি যাইহোক যাইহোক বিভাজনের ভক্ত নই / যাই হোক না কেন পদ্ধতির সাথে যোগ দিন .. পরামর্শের জন্য ধন্যবাদ ..
ফ্র0জেনফায়ার

@ ফ্র0জেনফায়ার আমি বিশ্বাস করি যে দুটি সমাধানের সংমিশ্রনের উদ্দেশ্য হ'ল ধীর পদ্ধতিতে ফ্যালব্যাক হ'ল যদি আপনি দ্রুততর ব্যবহার করতে না পারেন (যখন উদাহরণস্বরূপ লুপটি অসীম হবে)। সুতরাং দক্ষতার সাথে কার্যকারিতা নিশ্চিত করা নিরাপদ গার্ড হবে তবে ব্যর্থতার সম্ভাবনা ছাড়াই।
কোল লরেন্স

@ মোমোমো কেমন ত্রুটিযুক্ত?
স্যান্ডরক

24

কর্মক্ষমতা

আজ 27.12.2019 আমি নির্বাচিত সমাধানগুলির জন্য ম্যাকোস ভি 10.13.6 (উচ্চ সিয়েরা) তে পরীক্ষা করি perform

উপসংহার

  • str.replace(/abc/g, '');( সি ) সমস্ত স্ট্রিং একটি ভাল ক্রস ব্রাউজার ফাস্ট সমাধান।
  • split-join( এ, বি ) বা replace( সি, ডি ) ভিত্তিক সমাধানগুলি ) দ্রুত
  • সমাধানগুলির উপর ভিত্তি করে while( ই, এফ, জি, এইচ ) এর ধীর - সাধারণত ছোট স্ট্রিংয়ের জন্য ~ 4 বার ধীর এবং দীর্ঘ স্ট্রিংয়ের জন্য প্রায় 3000 ডলার (!) ধীর
  • পুনরাবৃত্তি সমাধান ( আরএ, আরবি ) ধীর এবং দীর্ঘ স্ট্রিংয়ের জন্য কাজ করে না

আমি আমার নিজস্ব সমাধানও তৈরি করি। দেখে মনে হচ্ছে বর্তমানে এটি সংক্ষিপ্ততম যা প্রশ্ন কাজ করে:

str.split`abc`.join``

বিস্তারিত

পরীক্ষাগুলি ক্রোম .0৯.০, সাফারি ১৩.০.৪ এবং ফায়ারফক্স .0১.০ (bit৪ বিট) এ সঞ্চালিত হয়েছিল। পরীক্ষা RAএবং RBব্যবহার পুনরাবৃত্তি। ফলাফল

এখানে চিত্র বিবরণ লিখুন

সংক্ষিপ্ত স্ট্রিং - 55 টি অক্ষর

আপনি আপনার মেশিনে পরীক্ষা চালাতে পারেন এখানে । ক্রোমের জন্য ফলাফল:

এখানে চিত্র বিবরণ লিখুন

দীর্ঘ স্ট্রিং: 275 000 টি অক্ষর

আরআরবি এবং আরবি পুনরাবৃত্তির সমাধান দেয়

রেঞ্জেরর: সর্বোচ্চ কল স্ট্যাকের আকার অতিক্রম করেছে

1 এম অক্ষরের জন্য তারা ক্রোমও ভেঙে দেয়

এখানে চিত্র বর্ণনা লিখুন

অন্যান্য সমাধানের জন্য আমি 1 এম অক্ষরের জন্য পরীক্ষা করার চেষ্টা করি, তবে ই, এফ, জি, এইচ এত বেশি সময় নেয় যে ব্রাউজারটি আমাকে স্ক্রিপ্টটি ভাঙ্গতে বলে তাই আমি পরীক্ষার স্ট্রিংটি 275 কে অক্ষরে সঙ্কুচিত করি। আপনি আপনার মেশিনে পরীক্ষা চালাতে পারেন এখানে । ক্রোমের জন্য ফলাফল

এখানে চিত্র বর্ণনা লিখুন

পরীক্ষায় ব্যবহৃত কোড Code


1
এখন এই গভীর উত্তর একটি নরক! আপনাকে অনেক ধন্যবাদ! যদিও, আমি যে সম্পর্কে আগ্রহী তা হ'ল কেন "নতুন রেজিএক্সপ্যাক্স (...)" সিনট্যাক্স এটিকে অনেক উন্নতি করে।
মার্ক গারগলি ডলিংকা

21

আপনি যা সন্ধান করতে চান তা যদি ইতিমধ্যে একটি স্ট্রিংয়ে থাকে এবং আপনার কাছে একটি রেইগেক্স এসকর্ট হ্যান্ডি না থাকে তবে আপনি যোগদান / বিভক্ত ব্যবহার করতে পারেন:

    function replaceMulti(haystack, needle, replacement)
    {
        return haystack.split(needle).join(replacement);
    }

    someString = 'the cat looks like a cat';
    console.log(replaceMulti(someString, 'cat', 'dog'));


ধন্যবাদ! এই সমাধানটি আমার সমস্যার জন্য নিখুঁতভাবে কাজ করে :)
xero399

19
function replaceAll(str, find, replace) {
  var i = str.indexOf(find);
  if (i > -1){
    str = str.replace(find, replace); 
    i = i + replace.length;
    var st2 = str.substring(i);
    if(st2.indexOf(find) > -1){
      str = str.substring(0,i) + replaceAll(st2, find, replace);
    }       
  }
  return str;
}

আমি অবাক হই যে এটি কতটা ভাল পারফর্ম করে ... সাবস্ট্রিংটি দেশীয় বা নতুন অক্ষরগুলি তৈরি করতে চর অ্যারে পেরিয়ে যায়।
মিমি

16

আমি এই পদ্ধতিটি পছন্দ করি (এটি কিছুটা পরিষ্কার পরিচ্ছন্ন দেখাচ্ছে):

text = text.replace(new RegExp("cat","g"), "dog"); 

1
ঠিক আছে, আপনি কীভাবে স্ট্রিংটিকে রেজেক্স প্যাটার্ন হিসাবে ব্যবহার করতে পারবেন?
রাকস্লাইস

আমি না, আমি কেবল এটি সরল পাঠ্যের জন্য ব্যবহার করি
ওভেন

15

কোনও রেজেক্স ব্যবহার না করেই এর সহজতম উপায়টি বিভক্ত হয়ে কোডের মতো এখানে যোগদান করুন:

var str = "Test abc test test abc test test test abc test test abc";
str.split('abc').join('')




13

পূর্ববর্তী উত্তরগুলি বেশ জটিল। এইভাবে প্রতিস্থাপন ফাংশনটি ব্যবহার করুন:

str.replace(/your_regex_pattern/g, replacement_string);

উদাহরণ:

var str = "Test abc test test abc test test test abc test test abc";

var res = str.replace(/[abc]+/g, "");

console.log(res);


10

আপনি যদি নিশ্চিত হয়ে যাচ্ছেন যে প্রতিস্থাপনের পরেও আপনি যে স্ট্রিংটির সন্ধান করছেন তার অস্তিত্ব নেই, তবে আপনাকে একটি লুপ ব্যবহার করতে হবে।

উদাহরণ স্বরূপ:

var str = 'test aabcbc';
str = str.replace(/abc/g, '');

সম্পূর্ণ হয়ে গেলে, আপনার এখনও 'টেস্ট এবিসি' থাকবে!

এটি সমাধানের সহজ লুপটি হ'ল:

var str = 'test aabcbc';
while (str != str.replace(/abc/g, '')){
   str.replace(/abc/g, '');
}

কিন্তু এটি প্রতিটি চক্রের জন্য দু'বার প্রতিস্থাপন চালায়। সম্ভবত (ভোটে নেমে যাওয়ার ঝুঁকিতে) যা কিছুটা বেশি দক্ষ তবে কম পঠনযোগ্য ফর্মের জন্য একত্রিত করা যেতে পারে:

var str = 'test aabcbc';
while (str != (str = str.replace(/abc/g, ''))){}
// alert(str); alerts 'test '!

সদৃশ স্ট্রিংগুলি অনুসন্ধান করার সময় এটি বিশেষভাবে কার্যকর হতে পারে।
উদাহরণস্বরূপ, যদি আমাদের কাছে 'এ,, বি' থাকে এবং আমরা সমস্ত সদৃশ কমাগুলি অপসারণ করতে চাই।
[সেক্ষেত্রে, কেউ .replace (/, + / g, ',') করতে পারে তবে কোনও সময়ে রেজেক্স জটিল হয়ে যায় এবং পরিবর্তে লুপটি যথেষ্ট ধীর হয়ে যায়]]


10

যদিও লোকেরা রেজেক্সের ব্যবহারের কথা উল্লেখ করেছে তবে আপনি যদি পাঠ্যের ক্ষেত্রে বিবেচনা না করেই পাঠ্যটি প্রতিস্থাপন করতে চান তবে এর থেকে আরও ভাল পদ্ধতির। বড় হাতের বা ছোট হাতের মতো। সিনট্যাক্সের নীচে ব্যবহার করুন

//Consider below example
originalString.replace(/stringToBeReplaced/gi, '');

//Output will be all the occurrences removed irrespective of casing.

আপনি এখানে বিশদ উদাহরণ উল্লেখ করতে পারেন ।


উদাহরণস্বরূপ সাইট থেকে: "/ toBeReplacedString / GI Regex আপনি ব্যবহার করতে হবে এখানে ছ বিশ্বব্যাপী ম্যাচের জন্য প্রতিনিধিত্ব করে এবং আমি যদি অবশ প্রতিনিধিত্ব করে ডিফল্ট Regex দ্বারা কেস সংবেদনশীল।।"
alikuli

8

আপনি কেবল নীচের পদ্ধতিটি ব্যবহার করতে পারেন

/**
 * Replace all the occerencess of $find by $replace in $originalString
 * @param  {originalString} input - Raw string.
 * @param  {find} input - Target key word or regex that need to be replaced.
 * @param  {replace} input - Replacement key word
 * @return {String}       Output string
 */
function replaceAll(originalString, find, replace) {
  return originalString.replace(new RegExp(find, 'g'), replace);
};

7

শুধু যোগ কর /g

document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');

প্রতি

// Replace 'hello' string with /hello/g regular expression.
document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');

/g মানে গ্লোবাল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.