1

PHP 中的 preg_replace 函数提供了一个限制参数。例如,第一次出现的 medium 替换为 original,第二次出现的 medium 替换为“type”。

$path = "demo\/medium\/Web081112_P001_medium.jpg";
$path = preg_replace ("/medium/","original",$path,1);
$path = preg_replace ("/medium/","type",$path,2);
echo $path;
// output : demo\/original\/Web081112_P001_type.jpg

那么,有没有什么方法可以使用 JQuery/JavaScript 来实现类似的功能呢?谢谢

4

2 回答 2

4

一般解决方案:

var n = 0;
"a a a a a".replace(/a/g, function(match) {
  n++;
  if (n == 2) return "c";
  if (n == 3 || n == 4) return "b";
  return match;
})
// => "a c b b a"

另外,您误会了:第二次替换不会发生。限制2没有说“第二次出现”,它说“两次出现”;但是,在第一个之后,preg_replace您不再拥有两个媒体,因此第二个preg_replace最终替换了剩下的一个,然后沮丧地退出了。您可以使用两个单次(非全局)replace(或preg_replace)调用来执行相同的操作,而无需使用任何限制。

于 2012-12-10T02:13:53.627 回答
1

有没有办法使用 jquery/javascript 来实现类似的功能?

使用 JavaScript 的原生replace().

默认情况下,replace()只会替换第一次出现 - 除非你设置了g修饰符。

例子:

path = "demo/medium/Web081112_P001_medium.jpg";
path = path.replace("/medium/", "original");
path = path.replace("medium", "type");

注意:您的代码与您的规范不符。我解决了你的规范。

于 2012-12-10T02:10:20.987 回答