jQuery - replace all instances of a character in a string
这个不行,我急需它
1
| $('some+multi+word+string').replace('+', ' ' ); |
总是得到
它总是只在第一个实例中替换,但我需要它适用于所有+符号。
- 我现在最大的问题是,为什么要用字符串而不是"some+multi+word+string".replace(/\+/g,' ');生成jquery对象?哦,阅读一下Mozilla开发人员网络的"正则表达式"页面。这很有帮助,而且解释得很好。
- 实际上,它是一个变为字符串的变量
- 但是,如果变量的值是字符串,或者字符串被分配给该变量,只需对变量调用replace():var str = 'some+multi+word+string'; str.replace(/\+/g,' ');。
- @戴维德霍马斯:那一点作用都没有。您必须使用replace方法的结果,它不会更改调用它的字符串。如str = str.replace(/\+/g, ' ');。
- @古法:我知道,由于当时的原因,我选择忽略了对另一个变量的赋值。我想我只是想演示如何在变量上使用replace()。而且,很明显,省略了做一些有用的事情的基本部分…=
- 我投票赞成正则表达式解决方案
需要使用正则表达式,以便可以指定全局(G)标志:
1
| var s = 'some+multi+word+string'.replace(/\+/g, ' '); |
(我删除了字符串周围的$(),因为replace不是jquery方法,所以根本不起作用。)
- 如何在此代码中使用变量,例如:for(i=0;i<=100;i++)str=str.replace(/"_0x69b9["+i.ToString()+"]"/g,_array[i]);
- 您将从一个字符串创建一个RegExp对象:str = str.replace(new RegExp('"_0x69b9[' + i + ']"', 'g'), _array[i]);。但是,考虑一下,如果您可以在模式中使用(\d+)来匹配任何数字,并在替换函数中查找它,这样您就可以在一个替换中替换所有实例,而不是执行101个替换。
- 如果您不能让它工作,很容易忽略/+/g不在引号内。在我意识到这一点之前,有点头疼。
1 2
| 'some+multi+word+string'.replace(/\+/g, ' ');
^^^^^^ |
"G"="全球"
干杯
- 是的,它需要regex,并且需要g开关。但是,没有:Uncaught TypeError: Object [object Object] has no method 'replace'。
- @戴维多马斯我已经考虑了4年了,我不同意。或者更确切地说,我不能重现你的错误。
- 它深深地困扰着疯子。过去4年来,睡眠并不容易,而@madbreaks mind对于它如何不起作用的想法变得疯狂-另一个注意事项^+1-感谢您在replace()函数中解释g
- 请解释下投者
在大多数情况下,regex是一种方式。
在某些情况下,指定更多元素或执行替换的特定元素可能更快:
1 2 3 4 5 6 7
| $(document).ready(function () {
$('.myclass').each(function () {
$('img').each(function () {
$(this).attr('src', $(this).attr('src').replace('_s.jpg', '_n.jpg'));
})
})
}); |
这将对每个字符串进行一次替换,但使用更具体的选择器进行替换。