'%' sembolü ile başlayan belirli bir sembolle başlayan bir diziyi '%' sembolü ile değiştirmeye çalışıyorum, ancak koşul, sembolün dizenin başında olması gerektiği. Örneğin,Dizgeyi bir sembolle başlayarak değiştirin n saat
.
@@@[email protected]@@
sembolleri '@' ı başlangıç maçları regex ile geldi
%%%[email protected]@@
kod
var str = "@@@[email protected]@@";
var exp = new RegExp('^@+', 'g');
var mystr = str.replace(exp, '%');
olduğu Ama,
verir Fakat, amaçlanan çıktı My şimdiki çözüm böyle bir şeydir
%%%[email protected]@@
geçerli:
var str = "@@@[email protected]@@";
var match = str.match(/^@+/g)[0];
var new_str = str.replace(match, "");
var diff_count = str.length-new_str.length;
var new_sub_str = Array(diff_count+1).join("%")
var mystr = new_sub_str + new_str;
Bu çözüm bana istenen çıktıyı veriyor, ancak performans konusunda endişeleniyorum.
Bunu başarmanın daha iyi bir yolu var mı?
var mystr = '@@@[email protected]@@'.replace(/^@+/g, function(match) {
return Array(match.length + 1).join('%');
});
document.write(mystr);
Array(n).join(s)
inşaat basitçe dize s
n-1
kez tekrarlayarak bir stenografi yoludur:
Dizenizin '@@@' ile başlaması garantiliyse, sadece var result = str.replace (/^@ +/g, '%%%'); '? – AdamJeffers
Hayır, bu sadece bir örnekti. Yani olayların sayısı değişebilir. –