jQuery String aus String entfernen

74

Ich versuche, eine Zeichenfolge aus einer Zeichenfolge in jQuery zu entfernen.

Hier ist die Zeichenfolge:

username1, username2 and username3 like this post.

Ich möchte username1,von dieser Liste entfernen . Ich habe versucht, die Liste mit einem Array hinzuzufügen, .split(', ')aber ich habe eine Fehlermeldung erhalten. Ich gehe davon aus, dass der Fehler darin besteht, dass nicht jedem Wort ein Komma folgt.

Ich möchte immer den ersten Gegenstand aus der Liste entfernen. username1ist nur ein Beispiel für einen Benutzernamen. Das erste Element ist immer der Benutzername des aktuell angemeldeten Benutzers, wenn ihm dieser Beitrag gefallen hat.

Ich habe versucht:

  var updated_list = $('#post_like_list').html().replace('username1, ', '');
  $('#post_like_list').html(updated_list);

Aber das hat die Liste nicht aktualisiert. Es aktualisiert jedoch die Liste, wenn es .text()anstelle von verwendet wird, .html()aber ich habe Links in der Liste, die ich beibehalten muss.

Carl Markham
quelle
Beginnt diese Zeichenfolge als Array in JS oder was? Basierend auf der Frage an dieser Stelle könnte die Antwort lauten: .replace ('Benutzername1,', ''), aber ich bezweifle, dass Sie danach suchen ...
Rob
Bitte posten Sie den relevanten Code in Ihrer Frage. Wenn Sie eine Fehlermeldung erhalten, geben Sie den von Ihnen verwendeten Code an, der den Fehler ausgibt.
user113716
Sie müssen klarstellen: Ist username1immer das gleiche? Haben Sie die immer entfernen möchten ersten Namen oder haben Sie einen bestimmten Namen entfernen? Und dies ist keine jQuery-Frage, sondern eine JavaScript-Frage.
Felix Kling
poste ein Beispiel HTML und ich bin sicher, dass jemand in der Lage sein wird, dies herauszufinden. Wir haben im Moment nur die Hälfte der Gleichung.
Nathan Gonzalez

Antworten:

163

Ich bin mir ziemlich sicher, dass Sie nur die einfache alte Ersetzungsfunktion wollen. Verwendung wie folgt:

myString.replace('username1','');

Ich nehme an, wenn Sie das nachfolgende Komma entfernen möchten, tun Sie dies stattdessen:

myString.replace('username1,','');

bearbeiten:

Hier ist Ihr ortsspezifischer Code:

jQuery("#post_like_list-510").text().replace(...) 
Nathan Gonzalez
quelle
1
Ich habe das versucht und bekam den Fehler (Firebug) jQuery ("# ​​post_like_list-510"). Ersetzen ist keine Funktion
Carl Markham
1
@carl, das liegt daran, dass die Variable myString nur eine Zeichenfolge ist, kein jquery-Objekt. jQuery ("# ​​post_like_list-510"). text (). replace (...)
nathan gonzalez
Sie möchten wahrscheinlich jQuery ('# post_like_list-510'). val (). replace (...)
matei
@Carl markham: Die Funktion ist eine Zeichenfolgenfunktion, keine jQuery-Funktion.
Felix Kling
@matei, val () gibt nicht das erwartete Ergebnis für ein Objekt wie div oder span zurück, wenn ich mich richtig erinnere.
Nathan Gonzalez
19

Um die Antwort von Nathan Gonzalez hinzuzufügen, beachten Sie bitte, dass Sie das ersetzte Objekt nach dem Aufruf der replaceFunktion zuweisen müssen, da es keine Mutatorfunktion ist:

myString = myString.replace('username1','');
Malloc
quelle
9

Wenn Sie nur "Benutzername1" entfernen möchten, können Sie einen einfachen Ersatz verwenden.

name.replace("username1,", "")

oder Sie könnten split verwenden, wie Sie erwähnt haben.

var name = "username1, username2 and username3 like this post.".split(",")[1];      
$("h1").text(name);

jsfiddle Beispiel

Mark Coleman
quelle
1

Ich gehe davon aus, dass der Text "Benutzername1" nur ein Platzhalter für einen tatsächlichen Benutzernamen ist. Vorausgesetzt, dass,

  • Wenn der Benutzername keine Leerzeichen enthalten darf, suchen Sie einfach vor dem ersten Leerzeichen oder Komma nach allem (und finden Sie dabei sowohl "u1 gefällt das" als auch "u1, u2 und u3 gefällt das").
  • Wenn es wird erlaubt , einen Raum zu haben, wäre es wahrscheinlich einfacher sein , jeden Benutzername in eigenem ist es einzuwickeln spanTag - Server-Seite, bevor sie an den Client gesendet wird , und dann nur mit den span - Tags arbeiten.
eykanal
quelle
1

Ziemlich sicher, dass niemand Ihre Frage genau nach Ihren Begriffen beantwortet. Sie möchten sie für dynamischen Text

var newString = myString.substring( myString.indexOf( "," ) +1, myString.length );

Es dauert eine Teilzeichenfolge vom ersten Komma bis zum Ende

Sam Alexander
quelle
1
Funktioniert gut! Ich habe gerade 'str' durch 'myString' ersetzt, damit die Lösung funktioniert.
Jonny