Präfix aus einer Liste von Zeichenfolgen entfernen

Lesezeit: 3 Minuten

Benutzer-Avatar
Alex

Wie kann ich eine Teilzeichenfolge (ein Präfix) aus einem Array von Zeichenfolgenelementen entfernen? (Entfernen Sie die Teilzeichenfolge von jedem Element)

Benutzer-Avatar
Jo

Verwenden RegExp und ^ um sicherzustellen, dass es sich um das Präfix handelt und nicht nur irgendwo in der Zeichenfolge:

var arr = ['a1', 'a2', 'a54a'];
for(var i = 0, len = arr.length; i < len; i++) {
    arr[i] = arr[i].replace(/^a/, '');
}
arr; // '1,2,54a' removing the 'a' at the begining

function trimPrefix(str, prefix) {
    if (str.startsWith(prefix)) {
        return str.slice(prefix.length)
    } else {
        return str
    }
}

var prefix = "DynamicPrefix"
trimPrefix("DynamicPrefix other content", prefix)

Benutzer-Avatar
Wayne

Viele der bereits gegebenen Antworten sind falsch, da sie die Zielzeichenfolge an einer beliebigen Stelle in jedem der Elemente entfernen (nicht nur am Anfang). Hier ist ein anderer Ansatz:

var str = "str_";
["str_one", "str_two_str_", "str_three"].map(function(el) {
    return el.replace(new RegExp("^" + str), '');
});

Ergebnis:

["one", "two_str_", "three"]

Oder, wenn Sie eine einfache Iteration bevorzugen (ohne Funktion höherer Ordnung):

var str = "str_";
var list = ["str_one", "str_two_str_", "str_three"];
for (var i = 0; i < list.length; i++)
    list[i] = list[i].replace(new RegExp("^" + str), '');

  • Das einzige Problem dabei ist, dass Sie jedes Mal, wenn die Funktion aufgerufen wird, eine neue RegExp instanziieren. Zumindest in anderen Sprachen ist das teuer.

    – Matt Hudson

    15. November 2017 um 21:32 Uhr

  • Die Anzahl der Antworten auf diese Frage von mehr als 10.000 SOs ist großartig.

    – Matt Hudson

    15. November 2017 um 21:32 Uhr

var pre="prefix_";

my_arr = my_arr.map(function(v){ return v.slice(pre.length); });

Siehe MDN wenn volle Browserunterstützung für .map() wird gebraucht.

kannst du auch verwenden .forEach() wenn Sie das ursprüngliche Array behalten müssen.

var pre="prefix_";

my_arr.forEach(function(v,i){ my_arr[i] = v.slice(pre.length); });

Benutzer-Avatar
Paul

var i;
for(i = 0; i < arr.length; i++)
    arr[i] = arr[i].replace(substr, '');

Beispiel:

var arr = ['test1', '2test', '3test3'];

// Use only one of these lines
var substr="test";  // This is for substrings
var substr = /^test/; // This is for prefixes only

var i;
for(i = 0; i < arr.length; i++)
    arr[i] = arr[i].replace(substr, '');

console.log(arr); // Prints ["1", "2", "33"] to console

  • Das OP fordert jedoch ein Präfix an, Ihr Code ersetzt es derzeit an einer beliebigen Stelle in der Zeichenfolge

    – Jo

    14. November 2011 um 22:16 Uhr

  • Sie fragte: “Präfix aus einer Liste von Zeichenfolgen entfernen”.

    – Jo

    14. November 2011 um 22:17 Uhr

  • Der Titel sagt das eine, der Körper das andere.

    – Felix Klinge

    14. November 2011 um 22:17 Uhr

  • Ach so, im Titel… Nun, in diesem Fall ändern Sie einfach den Wert von substr from 'test' zu /^test/. Dann druckt es ["1", "2test", "3test3"] wie erwartet.

    – Paulus

    14. November 2011 um 22:17 Uhr


Nur für etwas Abwechslung:

substr = new RegExp('(^|\|)prefix_', 'g');
arr = arr.join('|').replace(substr, '').split('|')

bearbeiten – um zu zeigen, wie Sie mit dem richtigen regulären Ausdruck nur auf das Präfix beschränken können.

  • Das OP fordert jedoch ein Präfix an, Ihr Code ersetzt es derzeit an einer beliebigen Stelle in der Zeichenfolge

    – Jo

    14. November 2011 um 22:16 Uhr

  • Sie fragte: “Präfix aus einer Liste von Zeichenfolgen entfernen”.

    – Jo

    14. November 2011 um 22:17 Uhr

  • Der Titel sagt das eine, der Körper das andere.

    – Felix Klinge

    14. November 2011 um 22:17 Uhr

  • Ach so, im Titel… Nun, in diesem Fall ändern Sie einfach den Wert von substr from 'test' zu /^test/. Dann druckt es ["1", "2test", "3test3"] wie erwartet.

    – Paulus

    14. November 2011 um 22:17 Uhr


Benutzer-Avatar
Talnikola

Iterieren Sie einfach Ihre Zeichenfolgenliste (z. B. mit einer for-Schleife) und verwenden Sie die replace Methode (Details hier)

1257850cookie-checkPräfix aus einer Liste von Zeichenfolgen entfernen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy