質問の主旨としては、こういうことかなと思いました。
2つの文字列
javascript
1const sampleA = '福岡市中央区港'
2const sampleB = "中央区港1-2-34- 567"
が与えられる。これらを単純に sampleA + sampleB
で結合してしまうと、
福岡市中央区港中央区港1-2-34- 567
となってしまい、中央区港
が繰り返されてしまう。そこで この繰り返し部分の 中央区港
を sampleB
から除去した 1-2-34- 567
を得たい。
上記のようなお題であるとして回答しますと、まず与えられる2つの文字列 sampleA
および sampleB
には含まれない何らかの区切り文字を決めます。例えば :
(コロン) とすると、以下によって diffB
に 文字列 1-2-34- 567
が得られます。
javascript
1const str = `${sampleA}:${sampleB}`;
2const regexp = /(.*):\1(.*)$/;
3
4const diffB = regexp.exec(str)[2];
5
6console.log(diffB); // '1-2-34- 567'
また、同じ正規表現を使って福岡市中央区港1-2-34- 567
を得るには、以下のようにします。
javascript
1const concatABWithoutCommonPart = str.replace(regexp, (_, p1, p2) => `${p1}${p2}`);
2
3console.log(concatABWithoutCommonPart); // '福岡市中央区港1-2-34- 567'
補足
配列を集合とみなして、2つの配列が表す集合の差集合に相当する配列を得るときに、lodash の difference が便利です。これを使って、以下
では、MDN英語版のjavascriptの説明の冒頭文 JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.
から母音に相当するアルファベットを除去した文字列を作っています。