Javascript 如何以不区分大小写的方式删除字符串中重复的字母,使字母只显示一次?
我需要做一个函数,删除重复的字母,无论它是大写或小写 如果我的输入字符串是Javascript 如何以不区分大小写的方式删除字符串中重复的字母,使字母只显示一次?,javascript,Javascript,我需要做一个函数,删除重复的字母,无论它是大写或小写 如果我的输入字符串是FoxtAg,则预期输出将是FoxtAg。我的输出是FoxfXtAg,它只删除小写的o 我还使用了.toLowerCase(),它给出了预期的输出,但改变了大小写 let duplicateLetter = (string) => { //check if string only contains letters if (!string.match(/^[a-zA-Z]+$/gi)) { console.l
FoxtAg
,则预期输出将是FoxtAg
。我的输出是FoxfXtAg
,它只删除小写的o
我还使用了.toLowerCase()
,它给出了预期的输出,但改变了大小写
let duplicateLetter = (string) => {
//check if string only contains letters
if (!string.match(/^[a-zA-Z]+$/gi)) {
console.log('does not match')
}
//check to see if it is a string
if(typeof(string) !== 'string') {
return 'Please return a string'
}
//make string lowercase (couldn't find check for case insensitive)
string = string.toLowerCase()
//this gets rid of spaces as duplicate characters
string = string.split(' ').join('')
//creates set with only unique elements
let noDuplicates = [...new Set(string)];
return noDuplicates.join('')
}
console.log(duplicateLetter("FoxfoXtAg"));
您可以使用和
let str=`AbraCadABraAlakAzam`
设op=/^[a-z]+$/gi.test(str)&&str
.拆分(“”)
.减少((输出,输入)=>{
if(!(out[inp.toLowerCase()]| | out[inp.toUpperCase()])){
输出[inp]=1
}
返回;
},{})
console.log(Object.keys(op.join)(“”))
您可以使用将字符串转换为数组。这使我们能够逐字重复它
要进行该迭代,最好的选项是,它用于将数组转换为单个结果(如字符串)
在reduce()
中,将使用不区分大小写的正则表达式来确定我们是否已经“使用”了该字母。我们只在输出中添加新的字母
函数移除副本(str){
让结果=数组.from(str).reduce((输出,字母)=>{
让re=new RegExp(字母“i”);//创建不区分大小写的正则表达式
return re.test(output)//我们的输出是否已经包含该字母?
?输出//是-不修改输出
:output+letter//No-将其添加到输出中
}, "");
返回结果;
}
日志(移除副本(“HELLOworld”)
给定问题的输入和预期输出,您可以将输入字符串转换为数组,.reverse()
然后.join()
数组,使用RegExp
/([a-z])(?=\1 |。*\1)/ig
替换为。)
要匹配a-z
后跟捕获字符或后跟非捕获字符的字符,然后再匹配capature字符,请再次将字符串转换为数组,.reverse()
然后.join()
const removeDuplicates=(str,r=a=>a.reverse().join`=>
r([…r([…str])。替换(/([a-z])(?=\1 |.*\1)/ig,)];
console.log(移除的副本(“foxtag”)代码>“如果我的输入字符串是“FoxtAg”,预期的输出将是“FoxtAg”。我的预期输出是“FoxfXtAg”,它只删除小写的o.“……我假设第二个字符串是实际输出,这不是您想要的?否则会有两个不同的预期结果对不起,我当前函数的输出是“FoxfXtAg”,但我想要“FoxtAg”的预期输出。我希望这能澄清这个问题。