2016-04-01 12 views
0

複数の文字列を一度に置き換えるにはどうすればよいですか?Node.jsは一度に複数の文字列を置き換えます

// the 'content' is part of html, so it all addjoined, 
// but I delete some tags and sepeate tag to look clean 
// *** the content is mongodb data 

var content ='<p>ggfhjghgk<a class="mg-popup-img" href="/uploads/2016040117124079.png"><img class="pop" style="max-width: 100%; max-height: 100%;" src="/uploads/2016040117124079.png" /></a></p> 

'です私は何をするつもりです

、新しいものにイメージ名に置き換えます。たとえば、コードの下のような存在です。したがって、すべてのファイル名が異なるでしょう。このように:

<p>ggfhjghgk<a class="mg-popup-img" href="/uploads/2016050117124079.png"><img class="pop" style="max-width: 100%; max-height: 100%;" src="/uploads/2016050117124079.png" /></a></p> 

私はグーグルで、いくつかのドキュメントを見つけました。このように:Replace multiple strings at once は、だから、私はこのproperyを行うことができますどのように

String.prototype.replaceArray = function(find, replace) { 
var replaceString = this; 
for (var i = 0; i < find.length; i++) { 
    replaceString = replaceString.replace(find[i], replace[i]); 
} 
    return replaceString; 
}; 

var originals = ['20160401', '20160402', '20160403']; 
var newnames = ['20160501', '20160502', '20160503']; 

var newcontent = content.replaceArray(originals, newnames); 
console.log(newcontent); // not working properly.-> It's not changed. 

にしようとしましたか?実際、私は「記事コピータスク」を実装しようとしています。ユーザーが記事をコピーするときに、記事にイメージタグがある場合は、イメージファイルをコピーし、イメージsrcを新しいものに置き換える必要があります。すべてのポインタを感謝...ありがとう。

+0

あなたのコードをクリーンアップ、またはそれをよりよく説明してください。そのままで、表示しているコードは**実際のJavaScriptではありません。 React JSXを使用していますか?それを言いなさい。しかし、あなたがそうするときでさえ、その「コンテンツ」割り当ては絶対に機能しません。 –

+0

@ Mike'Pomax'Kamermans 'content'はactullay mongo dbのデータです。多くの二重引用符があります。申し訳ありませんが、私はそれを表現する方法がわかりません。 – Juntae

+0

あなたの質問でそれを説明してください。あなたはmongodbからデータを取得しています。イメージングで単体テストを書く必要がありました:mongodb接続なしで動作させるには、実際にコンテンツに何が含まれていますか? *表示する*。 –

答えて

1

それはあなたがそれをregex可能性が1つの文字列なら:

// search for /uploads/(anything).png 
 
var regex = /(\/uploads\/)(.+?)(\.png)/gi; 
 
var counter = 0; 
 
var str = '<img class="pop" src="/uploads/20160401.png" /><img class="pop" src="/uploads/20160402.png" /><img class="pop" src="/uploads/20160403.png" />'; 
 

 
// replace /uploads/(anything).png with /uploads/mynewfile(counter).png 
 
var result = str.replace(regex, function() { 
 
    var path = arguments[1], 
 
     extension = arguments[3]; 
 

 
    return path + 'mynewfile' + (++counter) + extension; 
 
}); 
 

 
console.log(str); 
 
console.log(result);