我試圖用符號'%'替換一個以特定符號'@'開頭的字符串,但條件是符號應該位於字符串的開頭。替換以n次符號開始的字符串
例如,
@@@[email protected]@@
應
%%%[email protected]@@
我已經拿出了起點相匹配的正則表達式來替換「@」符號,但我能代替它只有一次,而不是用它匹配的次數替換它。
的代碼是
var str = "@@@[email protected]@@";
var exp = new RegExp('^@+', 'g');
var mystr = str.replace(exp, '%');
但是,它輸出
但是,預期的輸出是
%%%[email protected]@@
我目前的解決方案是這樣的:
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;
該解決方案的確給了我預期的輸出,但我擔心的是性能。
有沒有更好的方法來實現這一目標?
如果你的字符串保證以'@@@'開頭,你可以做'var result = str.replace(/^@ +/g,'%%%');'? – AdamJeffers
不,這只是一個例子。所以出現的次數可能會改變。 –