1

PHP の preg_replace 関数は limit パラメータを提供します。たとえば、medium の最初の出現は original に置き換えられ、medium の 2 番目の出現は「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 回目の交換は行われません。制限 2 は「2 回目の発生」ではなく、「2 回の発生」と言っています。ただし、最初の後にはpreg_replaceもう 2 つのメディアがないため、2preg_replaceつ目は残っている 1 つを置き換えることになり、フラストレーションで終了します。制限を使用せずに、 2 つのシングルショット (非グローバル) 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 に答える