2013-10-10 23 views
7

正規表現を使用して文字列から繰り返し文字を削除する方法が見つかりました。Regexは文字列から繰り返し文字をjavascriptで削除します

function RemoveDuplicates() { 
    var str = "aaabbbccc"; 
    var filtered = str.replace(/[^\w\s]|(.)\1/gi, ""); 
    alert(filtered); 
} 

出力:abc これは正常に動作しています。

str = "aaabbbccccabbbbcccccc"の場合、出力はabcabcです。 一意の文字のみを取得する方法や、重複する文字をすべて削除する方法はありますか? 方法がある場合は教えてください。

+0

が注文の問題をしていますか?言い換えれば、キャラクターの最初の出現は保存するものである必要がありますか? –

+0

重複を削除した後も同じシーケンスの文字が必要です。ユニークなものだけ。 –

答えて

22

"何か、これに続いて、この、" のような先読み:順序を維持し、正規表現がなければ

var str = "aabbccxccbbaa"; 
str.replace(/(.)(?=.*\1)/g, ""); // "xcba" 

:これは、各文字の最後発生を維持することを

var str = "aaabbbccccabbbbcccccc"; 
str.replace(/(.)(?=.*\1)/g, ""); // "abc" 

注:

var str = "aabbccxccbbaa"; 
str.split("").filter(function(x, n, s) { return s.indexOf(x) == n }).join(""); // "abcx" 
+0

私はMikeに尋ねたが、彼はまだ答えていない。あなたの解決策は、私が行っていたものです。あなたが順序を保つ必要があれば、 'str.split(" ")。reverse()。join(" ")'のトリックですか?このコードを実行することによって –

+1

...文字列が同じseqeunceに来ていません。 if var str = "aaabbbcccaabbbcccaaaaaaaasa";出力= "bcsa"しかし、私はabcsのようなものが欲しい –

+0

@Lindrian:はい、それ、または他の方法http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript – georg

3

これは古いクエストですnとなりますが、ES6ではSetsを使用できます。コードは次のようになります。

var test = 'aaabbbcccaabbbcccaaaaaaaasa'; 
 
var result = Array.from(new Set(test)).join(''); 
 

 
console.log(result);

関連する問題