【问题标题】:jQuery - replace all instances of a character in a string [duplicate]jQuery - 替换字符串中字符的所有实例[重复]
【发布时间】:2012-11-14 12:40:06
【问题描述】:

这不起作用,我非常需要它

$('some+multi+word+string').replace('+', ' ' );

总是得到

some multi+word+string

它总是只替换第一个实例,但我需要它适用于所有 + 符号。

【问题讨论】:

  • 我现在最大的问题是,为什么要从字符串创建 jQuery 对象,而不是 "some+multi+word+string".replace(/\+/g,' ');?哦,阅读Mozilla Developer Network's 'Regular Expressions' 页面。它很有帮助,并且很好地解释了事情。
  • 其实是一个变量变成了字符串
  • 但是如果变量有一个字符串的值,或者一个字符串被赋值给那个变量,只需在变量上调用replace():var str = 'some+multi+word+string'; str.replace(/\+/g,' ');
  • @DavidThomas:那根本不会做任何事情。您必须使用 replace 方法的结果,它不会更改调用它的字符串。例如。 str = str.replace(/\+/g, ' ');
  • @Guffa:我知道,出于当时合理的原因,我选择省略对另一个变量的分配。我想我只是想展示如何在变量上使用replace()。而且,显然,忽略了做一些有用的事情的基本部分...... =/

标签: jquery string replace


【解决方案1】:

你需要使用正则表达式,这样你就可以指定全局(g)标志:

var s = 'some+multi+word+string'.replace(/\+/g, ' ');

(我删除了字符串周围的$(),因为replace不是jQuery方法,所以根本不起作用。)

【讨论】:

  • 如何在此代码中使用变量,如以下示例: for (i = 0; i
  • 你可以从一个字符串创建一个RegExp 对象:str = str.replace(new RegExp('"_0x69b9[' + i + ']"', 'g'), _array[i]);。但是,请考虑您是否可以在模式中使用 (\d+) 来匹配任何数字并在替换函数中捕获它以进行查找,这样您就可以在一次替换中替换所有实例,而不是进行 101 次替换。
  • 如果你不能让它工作,很容易忽略 /\+/g 不在引号内。在我意识到这一点之前,我有点挠头。
  • 我们可以传递一个变量而不是固定字符串吗?
  • 它适用于字符,但我们如何从字符串中删除多个空格,例如。 '999 999 9999'.replace(/\ /g, ' ');不起作用。请分享任何建议。谢谢。
【解决方案2】:
'some+multi+word+string'.replace(/\+/g, ' ');
                                   ^^^^^^

'g' = "全局"

干杯

【讨论】:

  • 是的,它需要是正则表达式,是的,g 开关是必需的。但是,没有:Uncaught TypeError: Object [object Object] has no method 'replace'.
  • @DavidThomas 我已经考虑了 4 年,但我不同意。或者更确切地说,我无法重现您的错误。
  • 它深深地困扰着madbreaks。在过去的 4 年里,睡眠并不容易,而@Madbreaks 的大脑正在疯狂地思考它是如何不起作用的——在另一个注释中 ^+1——感谢你解释了 replace() 函数中的 g
  • 反对者,请解释
  • 啊,谢谢@KerwinSneijders 的提醒
【解决方案3】:

RegEx 是大多数情况下要走的路。

在某些情况下,指定更多元素或指定要执行替换的特定元素可能会更快:

$(document).ready(function () {
    $('.myclass').each(function () {
        $('img').each(function () {
            $(this).attr('src', $(this).attr('src').replace('_s.jpg', '_n.jpg'));
        })
    })
});

这对每个字符串执行一次替换,但它使用更具体的选择器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2021-08-16
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多