Wie entferne ich einen Teil einer Zeichenfolge?


Antworten:


145

Meine Lieblingsmethode ist "Teilen und Knallen":

var str = "test_23";
alert(str.split("_").pop());
// -> 23

var str2 = "adifferenttest_153";
alert(str2.split("_").pop());
// -> 153

split () teilt eine Zeichenfolge mithilfe einer angegebenen Trennzeichenfolge in ein Array von Zeichenfolgen auf.
pop () entfernt das letzte Element aus einem Array und gibt dieses Element zurück.


24
Der C-Programmierer in mir schaudert bei der Anzahl der Objekte, die bei dieser einfachen Split / Pop-Operation erstellt und zerstört wurden :) Wahrscheinlich: ein Array, 2 Zeichenfolgen, ein anderes Array, eine andere Zeichenfolge.
Gui13

11
@xgbi: Ja, JavaScript- und C-Entwickler haben jedoch ziemlich unterschiedliche Philosophien ;-)
Andy E

3
Sie können Ihrer Antwort die Möglichkeit hinzufügen, alert(str.split("_")[1]);da .splitein Array mit zwei Elementen [0]vor "_"und [1]nach erstellt wird. Das war eigentlich das, wonach ich gesucht habe, aber deine Antwort hat mir geholfen, dorthin zu gelangen ^^
Fernando Silva

1
@FernandoSilva Dann sagen wir, wenn es zwei "_" oder mehr gäbe, würden wir 3 Item-Arrays erhalten und könnten auch das dritte verwenden / löschen, oder? Übrigens +1. Genau das, wonach ich gesucht habe.
The Light Sabrix

@TheLightSabrix werfen Sie einen Blick darauf, es funktioniert, es ist viel einfacher als zu versuchen, es in Text zu erklären. jsbin.com/keleguzacu/edit?js,console
Fernando Silva

42

Angenommen, Ihre Zeichenfolge beginnt immer mit 'test_':

var str = 'test_23';
alert(str.substring('test_'.length));

5
Was ist, wenn es nicht mit dem Test beginnt?
NullVoxPopuli

Verwenden Sie Ersetzen, aber das funktioniert nicht, wenn es mehrere Vorkommen gibt. str.replace ("test_", ""); gibt eine neue Zeichenfolge zurück, in der alle Vorkommen von "test_" entfernt werden. Wenn also nur ein Vorkommen garantiert ist, sollte dies in Ordnung sein. Wenn es jedoch mehrere gibt, würde ich str = str.substring (0, str.indexOf ("test_)" + str.substring (str.indexOf ("test_") + 5, str.length) verwenden; ich weiß das ist ein alter Beitrag, aber wenn jemand darauf stößt, kann er mindestens einer Person irgendwo da draußen helfen.
George Xavier

23

Wenn Sie einen Teil der Zeichenfolge entfernen möchten

let str = "test_23";
str.replace("test_", "");
// 23

Wenn Sie einen Teil der Zeichenfolge ersetzen möchten

let str = "test_23";
str.replace("test_", "student-");
// student-23

19

Der einfachste Weg, den ich denke, ist:

var s = yourString.replace(/.*_/g,"_");

9
string = "test_1234";
alert(string.substring(string.indexOf('_')+1));

Es funktioniert sogar, wenn der String keinen Unterstrich hat. Probieren Sie es unter http://jsbin.com/ aus.


4
Dies hat weniger Overhead, aber mehr Code als die Antwort von Andy E. Beide funktionieren, aber ich bevorzuge diese Methode.
Palswim

0
string = "removeTHISplease";
result = string.replace('THIS','');

Ich denke, Ersetzen macht dasselbe wie eine eigene Funktion. Bei mir funktioniert das.


Nur-Code-Antworten können fast immer verbessert werden, indem erklärt wird, wie und warum sie funktionieren. Die Formatierung ist wichtig.
Jason Aller

Zumindest funktioniert es anders als die oben genannten auch mit Ersetzen.

0

Ich wollte "www."aus einem href entfernen, also tat ich Folgendes:

const str = "https://www.example.com/path";

str.split("www.").join("");

// https://example.com/path
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.