[英]Count the number of occurrences of a character in a string in Javascript
[英]Find a number of occurrences of character in string
我有一个字符串,我想删除字母a
的前3次出现(例如)。
似乎正则表达式无法解决特定数量的事件。 而且我不能使用无循环replace
,我想避免这种情况。
很好的挑战。
这有效:
var str = "I have a string and I want to remove the first 3 occurrences of the letter a (for example)."; str = str.replace(/^([^a]*a){3}/, function(match) { return match.replace(/a/g, '!'); }); document.body.innerHTML = str;
结果:
I h!ve ! string !nd I want to remove the first 3 occurrences of the letter a (for example).
第一次replace
匹配一个连续字符串,该字符串恰好包含3 a
s。 其内部替换将a
更改为a !
为了清楚; 您也可以放心地替换它。
这可以缩放为任意数量,因为您可以将{3}
更改为所需的更改数量。
我有一个字符串,我想删除字母a的前3次出现(例如)。
如果正则表达式不是强制性的并且循环不是一个大问题,那么请尝试此单行循环
str = str.split(/(?=a)/).map(function(value,index){ if (index < 3){value=value.replace("a", "")} return value }).join(""); // 3 and "a" can be passed on as input
使它像这样
function removeNOccurences(str, toBeRepalced, n) { return str.split(/(?=a)/).map(function(value,index){ if (index < n){value=value.replace(toBeRepalced, "")} return value }).join(""); } document.body.innerHTML += removeNOccurences("asdas3sdfw3aar23rzas", "a", 3);
这是一个利用Array#filter
的thisArg
的解决方案。
var string = 'a1a2a3a4a5a6a7a8a9a'.split('').filter(function (a) { return a !== 'a' || ++this.c > 3; }, { c: 0 }).join(''); document.write(string);
使用replace回调计算匹配项:
function replaceFirstN(str, regex, n, replacement) { var i = 0; return str.replace(regex, function(match) { return i++ < n ? replacement : match; }); } output.innerText = replaceFirstN("aaaaaaaa", /a/g, 3, "b");
<pre id="output"></pre>
没有Loop
, String#replace
和regex
var str = "abcabcabcabc"; function replace(s, symbol, replacer, times) { if (times == 0) return s; var i = s.indexOf(symbol); var a = s.split(''); a[i] = replacer; return replace(a.join(''), symbol, replacer, --times) } var result = replace(str, 'a', '_', 3); document.write(result);
var str = "What a beautiful day is today";
var strA = str.split('a',4).join('a');
var strRemaining = str.replace(strA,'');
// Do global replace and append remaining string
var resultStr = strA.replace(/a/g,'') + strRemaining;
alert(resultStr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.