Wie kann ich eine Teilzeichenfolge (ein Präfix) aus einem Array von Zeichenfolgenelementen entfernen? (Entfernen Sie die Teilzeichenfolge von jedem Element)
Präfix aus einer Liste von Zeichenfolgen entfernen
Alex
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)
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); });
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
Talnikola
Iterieren Sie einfach Ihre Zeichenfolgenliste (z. B. mit einer for-Schleife) und verwenden Sie die replace
Methode (Details hier)