次のような文字列があります'test:1; hello:five; just:23'。この文字列を使用して、次のことができるようにする必要があります。
....
var test = MergeTokens('test:1;hello:five;just:23', 'yes:23;test:567');
...
最終結果は'test:567; hello:five; just:23; yes:23'になります(トークンの正確な順序はそれほど重要ではないことに注意してください)。
誰かがこれをどうやってやるのかについて賢いアイデアを持っているかどうか疑問に思っています。右側の各トークンで正規表現の置換を考えていました。一致しなかったために置換が発生しなかった場合は、それを追加するだけです。しかし、おそらくもっと良い方法があります。
乾杯アンソニー
編集:右側が左側を上書きする必要があります。左側が元々あったもので、右側が新しいコンテンツです。別の見方をすれば、トークンが右側に存在しない場合にのみ左側に保持し、すべてのトークンを右側に保持するというものです。
@Ferdinand 返信ありがとうございます。問題は、提案したソリューションの効率です。私は当初、同様の行を考えていましたが、分割と結合はもちろん、マージのO(n * z)の複雑さ(nとzはそれぞれ左側と右側の数値トークン)のためにそれを割り引いていました。
したがって、なぜ私は正規表現の道を見下ろそうとしていたのですか。おそらく舞台裏では、正規表現は同じように悪いか悪いですが、右側に存在する左側の文字列からトークンを削除する正規表現(右側のトークンの合計量のO(n))を持ってから、 2つの文字列を一緒に(つまり、バットテスト= test1 + test2)、より効率的に見えます。ありがとう