簡體   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