民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS Perl と JScript の split の違い

<<   作成日時 : 2008/09/10 09:47   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

同じ名前の関数(メソッド)だと思って油断していたら、ひどい目にあった。いや、これ、油断って言うか?

お題:

"a,b,,,c" という文字列を ','(カンマ) で split し、得られた配列の総数を求める

解答:

Perl で
print scalar(splite(/,/, "a,b,,,c"));
を実行すると、答えは 5 となる。

JScript(WSH環境)で
WScript.Echo("a,b,,,c".split(/,/).length);
を実行すると、答えは 3 となる。

解説:

連続した区切り文字を一つとして数える( JScript )か、律儀に全部数える( Perl )か、の違いだ。
JScript のこの仕様、MSDN に記述がないし...他の言語ではどうなっているのだろうか?

CSV 形式の文字列を Ajax でクライアントに読み込んで、JScript で split したら配列の位置がずれてしまって困ったのが発端。色々考え悩んだ末に、やっとこの現象に気づいた(split の段階でおかしくなっていると気づくまでがたまた大変だったのだが)。
分かってしまえばどうということはないのだけれど、長いプログラムの中でこれを使っていると、訳が分からなくなることがある。要注意だ。
ちなみに、当面の問題については、Perl で JSON 形式のデータを生成するようにして回避した。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Perl と JScript の split の違い 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる