jQuery从字符串中删除字符串

78

我想在 jQuery 中从字符串中删除一个字符串。

这是原始字符串:

username1, username2 and username3 like this post.
我想从这个列表中删除username1,。我尝试使用.split(', ')将列表添加到一个数组中,但是出现了错误。我认为错误是因为不是每个单词后面都有逗号。
我总是想删除列表中的第一项。username1只是一个示例用户名。如果当前已登录用户喜欢此帖子,则第一项始终是该用户的用户名。
我已经尝试过:
  var updated_list = $('#post_like_list').html().replace('username1, ', '');
  $('#post_like_list').html(updated_list);

但是这并没有更新列表。不过,当使用.text()而不是.html()时,它确实会更新列表,但我需要保留列表中的链接。


这个字符串在JS中是一个数组吗?基于这个问题,目前的答案可能是:.replace('username1, ', ''),但我怀疑这不是你想要的... - Rob
请在您的问题中发布相关代码。如果您遇到错误,请提供导致错误的代码。 - user113716
你必须澄清:username1始终相同吗?您是否总是想删除第一个名称,还是要删除特定名称?而且这不是jQuery问题,而是JavaScript问题。 - Felix Kling
发布一些HTML的例子,我相信有人能够解决这个问题。目前我们只掌握了方程式的一半。 - nathan gonzalez
7个回答

183

很确定你只是想要普通的替换函数。使用方式如下:

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

我认为,如果你想要删除末尾的逗号,可以这样做:

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

编辑:

这是您特定网站的代码:

jQuery("#post_like_list-510").text().replace(...) 

1
我尝试了那个并得到了错误(firebug) jQuery("# post_like_list-510").replace不是一个函数。 - Cjmarkham
1
@carl,那是因为myString变量只是一个字符串,而不是jQuery对象。所以请使用jQuery("#post_like_list-510").text().replace(...)。 - nathan gonzalez
你可能想要使用jQuery('#post_like_list-510').val().replace(...)。 - matei
@Carl Markham:该函数是一个字符串函数,不是 jQuery 函数。 - Felix Kling
@matei,如果我没记错的话,val()在像div或span这样的对象上不会返回预期的结果。 - nathan gonzalez

20
为了补充Nathan Gonzalez的回答,请注意在调用replace函数后需要分配替换后的对象,因为它不是一个改变原对象的函数:

要添加到Nathan Gonzalez的回答上,请注意,在调用replace函数后,您需要分配替换后的对象,因为它不是一种改变原有对象的函数:

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

9
如果您只想删除“username1”,您可以使用简单的替换方法。 name.replace("username1,", "") 或者您可以像您提到的那样使用split。
var name = "username1, username2 and username3 like this post.".split(",")[1];      
$("h1").text(name);

jsfiddle example


1

我认为文本中的 "username1" 只是一个占位符,最终将成为实际的用户名。在此假设下,

  • 如果不允许用户名有空格,则只需搜索第一个空格或逗号之前的所有内容(从而找到“u1 likes this”和“u1、u2和u3 like this”)。
  • 如果允许空格,则可能更容易地在服务器端将每个用户名包装在其自己的标记中,然后再将其发送到客户端,并仅使用标记来处理。

1
我很确定没有人按照你的要求回答了你的问题,你想要动态文本。
var newString = myString.substring( myString.indexOf( "," ) +1, myString.length );

它从第一个逗号开始截取子字符串,一直到结尾。

1
很好用!我只是将“str”替换为“myString”,就得到了可行的解决方案。 - Jonny

0
这是我使用jQuery编码删除反斜杠的方式。
// Remove backslash from menu
let selector = jQuery('.crm-submenu-manage-invoices a');

// Get html
let stringRemove = selector.html();

// Remove backslash
stringRemove = stringRemove.replace('\\', '');

// Push back to selector
selector.html(stringRemove);

0

补充Shuvo的答案...我需要从摘录中删除标题,并使用以下代码:

a.title是我想要删除的文本。
span.excerpt是我想要从中删除的位置。

var title=$('a.title').text();
let selector = jQuery('span.excerpt');
let stringRemove = selector.html();
stringRemove = stringRemove.replace(title, '');
selector.html(stringRemove);

1
你为什么要同时使用 $jQuery - Cjmarkham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接