Wie entferne ich einen Teil einer Zeichenfolge?

82

Nehmen wir an, ich habe test_23und ich möchte entfernen test_.

Wie mache ich das?

Das vorherige Präfix _kann sich ändern.

NullVoxPopuli
quelle
Vielleicht sollten Sie einen Blick auf reguläre Ausdrücke in JavaScript
Barranka

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.

Andy E.
quelle
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));
BoltClock
quelle
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
anonym
quelle
19

Der einfachste Weg, den ich denke, ist:

var s = yourString.replace(/.*_/g,"_");
Yassir Ennazk
quelle
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.

gawi
quelle
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.

Stefan Stanchev
quelle
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
Franco Méndez
quelle