練炭ブログ

萌え壁紙、Irvine、DMonkey、Proxomitron などの情報を扱ってます。

DMonkey: String.split() の動作

コメントなし»

DMonkey の String.split() と ECMAScript/JavaScript/JScript のそれとは、動作がかなり違う。

--
第1引数に文字列を渡すと、正規表現に変換されて処理される。文字列そのもので分割することは出来ない。
'1a.2a-3'.split ('a.')[ '1', '2', '3' ]

. ? * \ といった正規表現でメタキャラクタとして扱われる文字で分割する時は注意する。

内部的には
'string'.split ('pattern')'string'.split (new RegExp ('pattern'))
のように取り扱われているもよう。

--
第2引数、第3引数もあるっぽいけど詳細不明。

--
空文字列で分割すると空配列が返ってくる
'string'.split ('')[ ]

JavaScript のように一文字ずつ分割したい場合は

'string'.split (/()/).slice (1, -1)

とする。ただし正規表現を使っているのでマルチバイト文字が入っていると化ける。

# () の意味はないが // と書くとコメント記法と扱われてしまうので不可。
# /()/ の代わりに '()' でも可。
# じゃあ '' でいいじゃん?ってことになるが何故か出来ない(ふりだしに戻る)。

また、少々長くなるが、以下のような方法でも出来る。

String.prototype.split_ = function (s) {
  if (s != '') {
    return this.split (s);
  }

  var result = [ ];
  var len = this.length;
  for (var i = 0; i < len; ++i) {     result.push (this.charAt (i));   }   return result; }; alert ('string'.split_ (''));

--
空文字列を分割すると、空文字列からなる配列が返ってくる
''.split ('x')[ '' ]

これは JavaScript と同じ。ただし空文字列で分割した場合は空配列になる。

--
引数を省略すると undefined が返ってくる。
'string'.split ()undefined

--
/./ で分割すると、文字数 +1 個の空文字列からなる配列が返ってくる
'abc'.split (/./)[ '', '', '', '' ]

これは JavaScript と同じ。ただし JScript(IE の JavaScript)では空配列になる。

--
第1引数で括弧によるキャプチャを使っても戻り値には含まれない。
'a1b2c'.split (/(\d)/)[ 'a', 'b', 'c' ]

ただし JScript(IE の JavaScript)でも戻り値に含まれない。

ネタ

コメントなし»

「大阪で生まれ育った文楽の灯消さないで」 人間国宝・竹本住大夫さんらが要望書 補助金カットに異論★2 2ちゃんねる瓦版

ラーメン二郎同人誌「恋する二郎」 ジロリアン、二郎の40年の歴史やビギナーズガイド - アキバBlog

知らない女が妻になっていた件 続・妄想的日常
恐ろしい。

【社会】 「ダウンロードしてばかりでは悪いな」 塩釜市職員、わいせつ写真2300枚を公開→逮捕…宮城 2ちゃんねる瓦版

【画像あり】機内食すげえ・・・・こんなのも食えるのかよお空の上で・・・・・・:キニ速  気になる速報
>>48 などにあるゼリーのカップのようなものは、ミネラルウォーターとのこと。
ペットボトルのほうが便利そうなんですが、何か利点があってこういう形なんでしょうか?
(安い、多すぎない、蓋ができない、箱詰めした時の隙間が小さい、とか)

【全板集合】2chにある無駄な知識、画像を集めるスレ『鉄剣タロー』:哲学ニュースnwk

FNNニュース: 1997年の千葉・流山市女性殺害事件 千葉県警、真犯人逮捕とともに誤認逮捕を謝罪

【大阪】警察官が電車のつり革で逆上がり、他の乗客に注意され逆上、暴行:キニ速  気になる速報

被災地で瓦礫撤去のボランティア中に職務質問、十徳ナイフ所持で取り調べ3時間 警察官「運が悪かったと思って」 | ニュース2ちゃんねる

萌えネタ

コメントなし»

フィギュアの写真撮影は楽しい。気がつくとカメラに興味を持ち始める:【2ch】ニュー速VIPブログ(`・ω・´)

萌えるコピペください! : あじゃじゃしたー