我有一个字符串,看起来类似于以下 '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串在一起(即vat test = test1 + test2)似乎更有效。谢谢