web-dev-qa-db-fra.com

jQuery Supprimer une chaîne de la chaîne

J'essaie de supprimer une chaîne d'une chaîne dans jQuery.

Voici la chaîne:

username1, username2 and username3 like this post.

Je voudrais supprimer username1, De cette liste. J'ai essayé d'ajouter la liste à un tableau en utilisant .split(', ') mais j'ai eu une erreur. Je suppose que l'erreur est due au fait que tous les mots ne sont pas suivis d'une virgule.

Je veux toujours supprimer le premier article de la liste. username1 N'est qu'un exemple de nom d'utilisateur. Le premier élément sera toujours le nom d'utilisateur de l'utilisateur actuellement connecté s'il a aimé ce message.

J'ai essayé:

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

Mais cela n'a pas mis à jour la liste. Cependant, il met à jour la liste lorsque vous utilisez .text() au lieu de .html(), mais j'ai des liens dans la liste que je dois conserver.

63
Carl Markham

vous êtes sûr de vouloir simplement remplacer l'ancienne fonction. utiliser comme ceci:

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

je suppose que si vous voulez supprimer la virgule de fin, faites ceci à la place:

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

modifier:

voici le code spécifique à votre site:

jQuery("#post_like_list-510").text().replace(...) 
145
nathan gonzalez

Pour ajouter nathan gonzalez answer, veuillez noter que vous devez attribuer l'objet remplacé après l'appel de la fonction replace, car il ne s'agit pas d'une fonction de mutation:

myString = myString.replace('username1','');
15
Malloc

Si vous souhaitez simplement supprimer "nom d'utilisateur1", vous pouvez utiliser un simple remplacement.

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

ou vous pouvez utiliser split comme vous l'avez mentionné.

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

jsfiddle exemple

9
Mark Coleman

Bien sûr, personne ne répond à votre question avec vos termes exacts, vous le voulez pour le texte dynamique

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

Il faut une sous-chaîne de la première virgule à la fin

1
Sam Alexander

Je suppose que le texte "nomutilisateur1" est juste un espace réservé pour ce qui sera finalement un nom d'utilisateur réel. En admettant que,

  • Si le nom d'utilisateur est pas autorisé à avoir des espaces, alors il suffit de rechercher tout ce qui précède le premier espace ou virgule (trouver ainsi "u1 aime ceci" et "u1, u2 et u3 comme celui-ci").
  • Si est autorisé à avoir un espace, il serait probablement plus facile de placer chaque nom d'utilisateur dans sa propre balise span côté serveur, avant de l'envoyer au client, puis de travailler avec les balises span.
1
eykanal