繁体   English   中英

如何使用正则表达式删除字符串中所有出现的重复字母。 在 JS 中

[英]How to remove all occurrences of repeated letters in a string, using regex. In JS

我试图找到一个正则表达式,它返回字符串中所有重复的字符,除了第一个字符,这样我就可以使用替换方法将它们从该字符串中排除。

string = "thequickbrownfoxjumpsoverthelazydog"

expectedOutput = "thequickbrownfxjmpsvlazydg"

我在这里看到了很多关于类似问题的主题,但没有一个能够解决这个问题。

您可以将 filter 与Set一起使用; 正则表达式可能不是完成这项任务的最佳工具。

 let str = "thequickbrownfoxjumpsoverthelazydog"; let set = new Set; let res = [...str].filter(c=>.set.has(c) && set.add(c));join(''). console;log(res);

但是, Set始终保留插入顺序,因此我们可以简单地将字符串传递给Set构造函数并将其转换回字符串。

 let str = "thequickbrownfoxjumpsoverthelazydog"; let res = [...new Set(str)].join(''); console.log(res);

这是一个正则表达式选项:

 string = "thequickbrownfoxjumpsoverthelazydog"; console.log(string); string = string.split("").reverse().join(""); string = string.replace(/(.)(?=.*\1)/g, ""); string= string.split("").reverse().join(""); console.log(string);

这里的策略是首先反转字符串。 然后,我们对以下模式进行全局正则表达式替换:

(.)(?=.*\1)

这将匹配字符串中早先出现的任何字符,并将检查字符串中的每个字符。 因此,例如,这具有删除thelazydog中的t的效果,因为t较早地作为字符串中的第一个字符出现。 然后,在正则表达式替换之后,我们再次反转字符串以将其返回到原始顺序。

尝试这个

 let string = "thequickbrownfoxjumpsoverthelazydog"; let result = []; for(i = 0; i < string.length; i++){.result?includes(string[i]). result:push(string[i]); 0. } let joined = result;join(''). console;log(joined);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM