У меня есть строка, которая выглядит примерно так: 'test: 1; hello: five; just: 23'. С этой строкой мне нужно сделать следующее.
....
var test = MergeTokens('test:1;hello:five;just:23', 'yes:23;test:567');
...
Конечным результатом должно быть 'test: 567; привет: пять; просто: 23; да: 23' (обратите внимание, точный порядок токенов не так важен).
Просто интересно, есть ли у кого-нибудь умные идеи, как это сделать. Я думал, что регулярное выражение заменяет каждый из жетонов справа, и если замена не произошла из-за несоответствия, просто добавьте его. Но, может быть, есть лучший способ.
Приветствие
Anthony
Редактировать: правая сторона должна перекрывать левую. Слева - то, что было изначально, а справа - новый контент. Другой способ взглянуть на это состоит в том, что вы держите токены слева только в том случае, если они не существуют справа, а все токены справа.
@ Ferdinand
Спасибо за ответ. Проблема в том, насколько эффективно предложенное вами решение. Первоначально я размышлял над подобными строками, но обесценил это из-за сложности слияния O (n * z) (где n и z - число токенов слева и справа соответственно), не говоря уже о расщеплении и объединении.
Следовательно, почему я пытался смотреть вниз по пути регулярных выражений. Может быть, негласно, регулярное выражение так же плохо или хуже, но имеет регулярное выражение, которое удаляет любой токен из левой строки, которая существует справа (O (n) для общего количества токена справа), а затем просто добавляет 2 строки вместе (т.е. тест vat = test1 + test2) кажется более эффективным. спасибо