0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Javascriptでもアローラロコンをアーロンにする

Last updated at Posted at 2022-07-28

やる事

タイトルの通り。入力された文字列を2文字づつ飛ばした文字列にして出力する。Pythonほど楽じゃないけどPHPよりは簡単そう。Typescriptでもっとすごいことをやってる人がいたけど、こういうのは勢いが大事なのでやっていく。

元ネタ

触発された記事

PHPでアローラロコンをアーロンにする

コード

arora.js
function arora(str){
  return new Array(...str).filter((_,i)=>(i+1)%2===1).join("")
}

function main(){
  const str = "アローラロコン"
  console.log(arora(str))
}

main()

中身

まず文字列を1文字ずつの配列にする。今回はカタカナ(サロゲートペアを含まないマルチバイト文字)だけなので問題ないが、split()メソッドを使って文字列を分解するとサロゲートペアが破壊される(いわゆる「𠮷田さん」問題)ので、スプリット構文で文字列を分解して配列を作成している。(参考: String.prototype.split() - JavaScript | MDN )

arora.js
new Array(...str)
// ['ア', 'ロ', 'ー', 'ラ', 'ロ', 'コ', 'ン']

次にfilter()メソッドで奇数番目の文字だけを抽出する。

arora.js
new Array(...str).filter((_,i)=>i%2===1)
// ['ア', 'ー', 'ロ', 'ン']

filterメソッドのコールバック関数は第2引数にインデックスを取るので、これに1を足した数値が2で割り切れるかどうかで判別すればいい。
後はjoin()メソッドで文字列に戻せば終わり。セパレーターに空文字を指定しないとカンマ区切りで文字列になるので注意。

arora.js
new Array(...str).filter((_,i)=>(i+1)%2===1).join("")
// アーロン

正規表現を使う方法もある

元ネタにあったりコメント欄で頂いたりした正規表現を使う方法。しかも「𠮷田さん」問題に対応

regex.js
console.log( '🐈🙀😺'.replace(/(.)./gu, '$1') );
// 🐈😺

...きっと正規表現には無限の可能性がある。

おわり

なんか間違っていたらコメントください。
なんか記事を書くと強い人類から知識が降ってきてすごい。

0
1
3

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?