LoginSignup
15
9

More than 5 years have passed since last update.

JavaScriptのsplitとjoinで不純物探知

Last updated at Posted at 2015-12-30

stringクラスのsplitとarrayクラスのjoinを使えば、不純物探知ができるよねというお話。

以下のコードを例に取ります。

var hello = "hellohellohellohellohelloohello";

var exceptForHello = hello.split('hello').join('');
if(exceptForHello !== '') {
  console.log('Not pure! ' + exceptForHello + ' is founded!');
}

最初にhelloがたくさん並んだ文字列があります。一見、すべてhelloに見えますね。

次に、split('hello').join('')をしています。これは文字列を配列化して、さらに文字列に戻しています。
配列化の際に、splitの引数で文字列を区切る事ができます。

その区切り文字としてhelloを指定すると、結果的にhelloを削ぎ落とすことができます。

'hello,hello,hello'

たとえば上記の文字列にsplit(',')とすると、

['hello', 'hello', 'hello']となります。

これは、カンマを捨てたことに等しいです。

この仕様を利用したのが、先述のhelloの削ぎ落としです。これよって、不純物のみが抽出されます。その上でjoinを使って配列要素を連結します。これが不純物の文字列です。
この文字列の長さが0ならば、つまり1文字もなければ不純物は無いということになります。

splitを多重にかけることによって、複数条件で絞り込むこともできますね。
ただし、文字列置換のような不足の事態は起こり得ますが…。

参考:
このテクニックは、競技プログラミングのこちらの回答を見て発見しました。感謝です。
http://abc023.contest.atcoder.jp/submissions/401872

15
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
9