[英]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.