යාවත්කාලීන කිරීම:
යාවත්කාලීනයක් සඳහා එය තරමක් ප්රමාදයි, නමුත් මම මේ ප්රශ්නයට බාධා කළ නිසාත්, මගේ පෙර පිළිතුර මම සතුටු වන එකක් නොවන බවත් දුටුවෙමි. ප්රශ්නය එක් වචනයක් ආදේශ කිරීම සම්බන්ධ බැවින්, වචන මායිම් භාවිතා කිරීම ගැන කිසිවෙකු නොසිතයි ( \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"
මූලික වශයෙන්, මෙම ප්රශ්නය මෙහි ඇති ප්රශ්නයට සමාන වේ:
ජාවාස්ක්රිප්ට් "" "වෙනුවට" "" ආදේශ
Ike මයික්, මම එහි දී දුන් පිළිතුර පරීක්ෂා කරන්න ... ග්රාහකයේ බහු සිදුවීම් ප්රතිස්ථාපනය කිරීමට ඇති එකම ක්රමය රීජෙක්ස්ප් නොවේ. නම්යශීලී ලෙස සිතන්න, බෙදීම් සිතන්න!
var newText = "the cat looks like a cat".split('cat').join('dog');
විකල්පයක් ලෙස, වචන කොටස් ප්රතිස්ථාපනය වීම වැළැක්වීම සඳහා - අනුමත පිළිතුර ද කරනු ඇත! නිතිපතා ප්රකාශන භාවිතයෙන් ඔබට මෙම ගැටළුව මඟහරවා ගත හැකිය, එය තරමක් සංකීර්ණ හා එහි ප්රති shot ලයක් ලෙස, මන්දගාමී වේ:
var regText = "the cat looks like a cat".replace(/(?:(^|[^a-z]))(([^a-z]*)(?=cat)cat)(?![a-z])/gi,"$1dog");
ප්රතිදානය පිළිගත් පිළිතුරට සමාන වේ, කෙසේ වෙතත්, මෙම නූලෙහි / cat / g ප්රකාශනය භාවිතා කිරීම:
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" ??
අපොයි ඇත්ත වශයෙන්ම, මෙය ඔබට අවශ්ය දේ නොවේ. එසේනම් කුමක් ද? IMHO, 'බළලා' කොන්දේසි සහිතව පමණක් ප්රතිස්ථාපනය කරන රීජෙක්ස් ය. (එනම් වචනයේ කොටසක් නොවේ), එසේ:
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
aba
දීababa
ඇතිca
, ඔබ කරන ප්රතිඵලයක් බලාපොරොත්තු වන්නේ?caba
?abca
?cca
?