2016-12-01 3 views
-5

Ich versuche herauszufinden, wie eine Unterzeichenfolge aus einer Hauptstring in Javascript zu finden und zu löschen. Zum Beispiel habe ich die Zeichenfolge "| 1 | 2 | 3 | 4 | 5 |" und ich möchte zufällige Sub-Strings aus diesem löschen. Ich habe es geschafft, wenn ich konsekutive Sub-Strings habe, sagen wir "| 1 | 2 |", aber ich kann nicht herausfinden, wie man die nicht aufeinander folgenden Sub-Strings wie "| 1 | 4 |" löscht. Wenn du helfen könntest, würde ich es mir aneignen.Wie entfernen nicht aufeinanderfolgende Teilstrings in Javascript

+3

Aber '“ | 1 | 4 | "' ist kein Teilstring ... – Oriol

+1

Es gibt keine "nicht-aufeinanderfolgenden" Teilstrings. Warum benutzt du nicht einfach ein Array? Es klingt, als ob du nur "1" und "4" finden und diese beiden Elemente entfernen möchtest. – Xufox

+1

Versuchen Sie, '" | 1 | 2 | 3 | 4 | 5 | ".split ('|')' auszuführen. Vielleicht ist es besser, mit diesem Format zu arbeiten. –

Antwort

1

Sie mit regex ersetzen können versuchen,

"|1|2|3|4|5|".replace(/\|(1|4)\|/g,"|") 

Sie erhalten,

"|2|3|5|" 

oder besser,

function replace_non_consecutives(s, subs){ 
    var v = subs.match(/[^|]+/g); 
    var strregex = "\\|(" + v.join("|") + ")\\|"; 
    var re = new RegExp(strregex,"g"); 
    while (s.match(re)) s = s.replace(re,"|"); 
    return s; 
} 

replace_non_consecutives("|1|2|3|4|5|", "|1|2|4|"); 

Sie erhalten,

"|3|5|" 
+0

Hi Dies funktioniert perfekt für nicht fortlaufende Nummern in der Zeichenfolge. Aber wenn wir | 1 | 2 | Es löscht die | 2 | nicht. – Kostadin

+0

ja, '| 1 | 2 |' funktionieren nicht, weil 1 und 2 fortlaufende Nummern sind, werde ich es beheben –

+1

@Kostadin ich feste Überlappung Problem in der Post –

Verwandte Themen