jQuery从字符串中删除字符串


74

我正在尝试从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 2011年

您必须澄清:username1总是一样吗?你总是希望删除的第一名称或你想删除一个特定的名称?这不是jQuery问题,而是JavaScript问题。
Felix Kling

发布一些HTML示例,我敢肯定有人将能够弄清楚这一点。目前,我们只有等式的1/2。
森·冈萨雷斯

Answers:


166

非常确定您只需要普通的旧替换功能。像这样使用:

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

我想如果您想删除结尾的逗号,请改为:

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

编辑:

这是您网站的特定代码:

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

1
我尝试过并得到错误(萤火虫)jQuery(“#post_like_list-510”)。replace不是一个函数
Carl Markham

1
@carl,那是因为myString变量只是一个字符串,而不是jquery对象。jQuery(“#post_like_list-510”)。text()。replace(...)
森·冈萨雷斯

您可能想要jQuery('#post_like_list-510')。val()。replace(...)
matei

@Carl Markham:该函数是字符串函数,而不是jQuery函数。
菲利克斯·克林

如果我没记错的话,@ matei,val()不会在div或span之类的对象上返回预期结果。
森·冈萨雷斯

19

要添加内森·冈萨雷斯的答案,请注意,您需要在调用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示例


1

我假设文本“ username1”只是一个占位符,它将最终成为实际的用户名。假如说,

  • 如果用户名是不是不允许有空格,则只需搜索一切第一空格或逗号之前(从而找到既“U1喜欢这个”,“U1,U2和U3这样”)。
  • 如果允许有一个空间,它可能会更容易包裹在它自己的每个用户名span标签的服务器端,将其发送到客户端之前,然后只需用span标签的工作。

1

可以肯定的是,没有人按照您的确切条件回答您的问题,您希望它用于动态文本

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

从第一个逗号到最后都需要一个子字符串


1
效果不错!我只是用“ myString”替换了“ str”作为工作解决方案。
强尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.