Javascript 找出一个字符在一个字符串中重复的次数,并用一个动态数字删除这些重复的字符
我想写一个函数,它接收两个参数:String和Number。 该函数将返回另一个与输入字符串相似但带有某些字符的字符串 远离的。 该函数将从相同的连续运行中删除字符 字符,其中运行的长度大于输入参数 例如:Javascript 找出一个字符在一个字符串中重复的次数,并用一个动态数字删除这些重复的字符,javascript,string,Javascript,String,我想写一个函数,它接收两个参数:String和Number。 该函数将返回另一个与输入字符串相似但带有某些字符的字符串 远离的。 该函数将从相同的连续运行中删除字符 字符,其中运行的长度大于输入参数 例如: "aaab", 2 => "aab" "aabb", 1 => "ab" "aabbaa", 1 => "aba" 我所做的: function d
"aaab", 2 => "aab"
"aabb", 1 => "ab"
"aabbaa", 1 => "aba"
我所做的:
function doSomething(string,number) {
let repeatCount = 0
debugger;
for (let i = 0; i < string.length; i++) {
if(string[i] == string[i+1]){
repeatCount++
}
if(repeatCount > number ){
string.replace(string[i],'')
}
}
console.log(string)
}
doSomething('aaab',2)
函数doSomething(字符串、数字){
让repeatCount=0
调试器;
for(设i=0;i数字){
string.replace(字符串[i],“”)
}
}
console.log(字符串)
}
剂量测定法('aaab',2)
console.log(字符串)
打印'aaab'
,但我希望它打印'aab'
,因为数字是2,字符'a'重复了3次
如果还有更好的方法,我会很乐意学习的
如果还有更好的方法,我会很乐意学习的
您可以使用一种方法和一个带有反向引用的正则表达式来匹配连续的字母。然后,您可以使用删除其他字母,使其达到定义的长度,如下所示:
函数缩短(字符串、数字){
返回字符串.replace(/()\1+/g,m=>m.slice(0,数字))
}
console.log(缩写为“aaab”,2))/=>“aab”
console.log(缩写为(“aabb”,1))/=>“ab”
log(shorten(“aabbaa”,1))/=>“aba”
并不是说代码的其余部分是正确的。但您犯的一个基本错误是,javascript中的字符串是不可变的。不能像这样更改字符串的元素
string.replace(string[i],'')
这不会改变“字符串”。你必须用它做另一根线
let str = string.replace(string[i],'')
函数doSomething(字符串、数字){
让repeatCount=0
调试器
让sameletter=string[0]
for(设i=0;i数字){
var result=string.split(“”)
结果:拼接(i,1)
string=result.join(“”)
我--
}
}
否则{
sameletter=字符串[i];
重复计数=1;
}
}
console.log(字符串)
}
doSomething('aaaabbbeeffeefffgggggggggg',2)
嘿,伙计,你能解释一下字符串中发生了什么吗。replace()?/()\1+/gpart@BarLevin我编辑了我的答案,试图在原文下更详细地解释它explanation@BarLevin还值得一看正则表达式是如何匹配的,这可能会澄清一些问题