当前位置:  开发笔记 > 编程语言 > 正文

用符号替换字符串n次

如何解决《用符号替换字符串n次》经验,为你挑选了1个好方法。

我试图用符号'%'替换以特定符号'@'开头的字符串,但条件是符号应该在字符串的开头.

例如.

@@@hello@hi@@

应该被替换

%%%hello@hi@@

我提出了与起始'@'符号匹配的正则表达式,但我只能将它替换一次,而不是用它匹配的次数替换它.

代码是

var str = "@@@hello@hi@@";
var exp = new RegExp('^@+', 'g');
var mystr = str.replace(exp, '%');

但是,它输出

%hello@hi@@

但是,预期的输出是

%%%hello@hi@@

我目前的解决方案是这样的:

var str = "@@@hello@hi@@";
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;

这个解决方案确实给了我预期的输出,但我担心性能.

有没有更好的方法来实现这一目标?



1> Doorknob..:

您可以使用回调函数:

var mystr = '@@@hello@hi@@'.replace(/^@+/g, function(match) {
  return Array(match.length + 1).join('%');
});
document.write(mystr);
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有