[#18226] Ruby 本ってば、うれしいなー — Atsuko Yoshida <atsuko@...>
こんにちは〜。久しぶりです。あつこです。
[#18233] [book] blade.nagaokaut.ac.jp/ruby/ruby-list/ — Shin-ichiro Hara <sinara@...>
原です。
けいじゅ@日本ラショナルソフトウェアです.
原です。
これつぐです。
けいじゅ@日本ラショナルソフトウェアです.
これつぐです。
けいじゅ@日本ラショナルソフトウェアです.
原です。
[#18265] アクセス制御について — Tadashige Morii <m_tada@...>
森井です。
[#18293] [book] 新宿紀伊國屋売り上げ情報 — Noritsugu Nakamura <nnakamur@...>
[#18332] rubyTk の Tk は何がお勧めですか? — Sakae Kobayashi <sakae@...>
小林栄と申します。
[#18338] オブジェクトの非同一性判定 — Ayanosuke <aya@...>
綾乃介です。
いわおかです。
綾乃介です。
[#18348] Is there ext/GD for gd-1.7.x — "OGAWA, Hiroshi Santa" <santa@...>
Ruby本買って目から鱗を落としながら読んでいます。
[#18361] Proc in a loop — ttate@...
立石です。
[#18374] regular pattern — Katsuya Tanaka <tanaka@...>
まつもと ゆきひろです
[#18420] bindrv on oracle — 中村暁史 Nakamura Akifumi <BXQ04723@...>
[#18447] mswin32 でのファイル名の大 / 小文字 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
わたなべです.
[#18467] Array doesn't include Comparable — kjana@... (YANAGAWA Kazuhisa)
Array#<=> が定義されてるのに not Array < Comparable なのは何か理由があ
[#18476] paramclass — gotoken@... (GOTO Kentaro)
ごとけんです
[#18485] Linux magazine 12/1999 — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
なひです.
[#18494] `make test' failure on Cygwin build w/ --enable-shared — Mimpei MORISHITA <mimpei@...>
森下 @ CAC と申します。
[#18501] 関数 ` の動作 — Keisuke CHIBA <chiba@...>
ちばと申します.
[#18517] 自分の IP を獲得する方法 — Suguru Kakishita <kakky@...>
柿下です
[#18526] アイコンコンテスト(ファイル用) — Hoshino Hitoshi <zin@...>
星野(Zin)と申します。
[#18533] cover animal for Ruby book — Koretsugu Daigoro <tmmcross@...>
これつぐです。
[#18539] [book] $*, etc. — Yasuhiro Fukuma <yasuf@...>
福間@福岡 です。
ごとけんです
At Mon, 15 Nov 1999 17:49:27 +0900,
ごとけんです
小林です。
[#18545] 変数の型チェック — "Hideaki Takata" <hideakit@...3.dion.ne.jp>
高田です。
[#18580] — tokoma@... (中川 誠)
中川です。
もとの質問のかたとは別の中川です。
中川です。
中川です。長文で失礼します。
中川です。
まつもと ゆきひろです
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
[#18582] Regexp source — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
こんばんは、ZnZです。
新井です。
[#18584] [REQ] [].grep(pat) #=> [] — gotoken@... (GOTO Kentaro)
ごとけんです
立石です。
[#18603] coding style — Shugo Maeda <shugo@...>
前田です。
[#18608] swigruby-0.3 — Masaki Fukushima <fukusima@...>
福嶋です。
[#18632] header output in eruby — TAKEUCHi Kahori <take-k@...>
こんにちは、たけうちと申します。
[#18637] constant? — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
わたなべです.
もりきゅうです。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
あおきです。
[#18638] fibonacci — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
[#18666] FileTest on NT — Keisuke CHIBA <chiba@...>
ちばと申します.
[#18668] rand — Ito Kazumitsu <ito@...>
伊藤と申します。
[#18687] Re: header output in eruby — TAKEUCHi Kahori (竹内かほり) <take-k@...>
たけうちです。
[#18709] ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...>
塩田です。
助田です.
オレンジソフト塩田です。
助田です.
わたなべです.
なひです.
[#18712] Re: header output in eruby — TAKEUCHi Kahori <take-k@...>
たけうちです。
なひです.
まつもと ゆきひろです
まつもと ゆきひろです
なひです.
[#18741] Re: Why Mix-in? (Re: [book] $*, etc.) — Toyofuku <toyofuku@...>
豊福です。
まつもと ゆきひろです
[#18773] [Q] mod_ruby を使用したスクリプトについて — Yamada Kenji <kyamada@...>
[#18788] super — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
こんばんは、ZnZです。
[#18801] Re: super — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。ちょいと長文。
[#18807] protected なメソッドの再定義 — YAMASHITA Junji (山下 純司) <ys_jyunji@...>
山下 純司です。
[#18830] mod_ruby-0.1.4 — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
In message "[ruby-list:18830] mod_ruby-0.1.4"
高橋征義です。
なひです.
高橋です。
[#18833] delete array member inside each block — Kikutani Makoto <kikutani@...>
たとえば、「整数の配列の偶数メンバーだけ消す」みたいのは
[#18852] Re: Why Mix-in? (Re: [book] $*, etc.) — Toyofuku <toyofuku@...>
豊福です。
[#18853] initializer polymorphism? — Takeyuki Watadani <watadani@...>
渡谷といいます。
In message "[ruby-list:18853] initializer polymorphism?"
渡谷です。すばやい回答ありがとうございます。
ごとけんです
福嶋です。
ごとけんです
石橋秀仁です。無用の情報です。
[#18868] Singleton の instance が複数になることがある — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
こんばんは、ZnZです。
[#18896] Database and Object Oriented Programming — Akihiro Yamauchi <aygoofy@...>
こんばんは。
[#18911] Re: eRuby 変換後の無駄 (?) な改行 — TAKEUCHi Kahori <take-k@...>
たけうちです。
松尾です。
前田です。
こんばんは、ZnZです。
前田です。
[#18914] Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...>
石橋秀仁です。
石橋秀仁です。
石橋秀仁です。
石橋秀仁です。
田中@ISASです。ruby-listの方は初めてです。よろしくおねがいします。
たかたです。
石橋秀仁です。
石橋秀仁%オープンソース原理主義者です。
In message <19991206121518W.s34204@vip.cis.kurume-nct.ac.jp>
[#18941] ruby-1.4.2 for Human68k について — IWATSUKI Hiroyuki <don@...>
はじめまして、岩月と申します。
[#18948] 他言語との比較 — とみたまさひろ <tommy@...>
とみたです。
[#18961] or と || の違い — Ayanosuke <aya@...>
館林と申します。
川戸と申します。はじめまして。
[#18994] ftplib で日付の詳細な list を得たい — Hiroshi Saito <HiroshiSaito@...>
こんにちは、サイトウです。
[ruby-list:18483] Re: [book] csv_split
けいじゅ@日本ラショナルソフトウェアです.
In [ruby-list :18477 ] the message: "[ruby-list:18477] [book]
csv_split ", on Nov/08 23:11(JST) Kazuhiro Nishiyama writes:
>こんばんは、ZnZです。
どもども.
>csv_split1は、列が「"」で終わる場合に
>例外(cannot decode CSV (RuntimeError))が発生します。
うーん....
こんな感じでしょうか... 正規表現がだんだん複雑になるのが気が重いけど...
# (アルゴリズムの本質を変えない)エレガントな解答求む.
--
### csv_split
def csv_split(source, delimiter = ',')
csv = [] # splitした結果が入る.
data = "" # 解析しているフィールドの文字列が入る.
#(1) 文字列をデリミタで区切り, その区切られた文字列毎にeachで処理する.
source.split(delimiter).each do |d|
# (2) 継続フィールドの処理(フィールドが`"'で始まっている時のため)
if data.empty?
data = d
else
data += delimiter + d
end
if /^"/ =~ data
# (3.1) 文字列が`"'で始まっている時の処理
if /(^"|[^"])("")*"$/ =~ data
# (3.1.1) `"'で終了している時の処理
# (A) "で始まるフィールドの処理
csv << data.sub(/^"(.*)"$/, '\1').gsub(/""/, '"')
data = ''
end
else
# (3.2) `"'で始まっていない時の処理
csv << d
data = ''
end
end
raise "cannot decode CSV\n" unless data.empty?
csv
end
--
>csv_split3は行が「"」で終わる場合に例外が発生します。
>./csv_split3.rb:41:in `concat': failed to convert nil into String (TypeError)
> from ./csv_split3.rb:41:in `csv_split_for_quoted_field'
> from ./csv_split3.rb:7:in `csv_split'
>
>また、のcsv_split3は最後の列が空の時に無視されるようです。
>
>
>p csv_split(',""""') # =>どちらも例外
>p csv_split(',"""",') # =>csv_split3だと["", "\""]になる。
うーん. うーん.
前者の問題は解決が楽だけど, 後者は.... csv_split2と同じく番兵(?)を置くこ
とにしました.
# こちらもエレガントな解答求む
--
### csv_split3
# (1) csv_splitの本体
def csv_split(source, delimiter = ',')
chars = (source+",").split(//) # (A) 文字列を1文字ずつに分解する
csv = []
while c = chars.shift # 配列の先頭から1要素取り出し, その
# 要素を配列から削除する
case c
when '"'
# 配列csvにフィールドを追加.
csv.push csv_split_for_quoted_field(chars, delimiter)
else
# 先ほど取り出した文字を戻す.
chars.unshift c
csv.push csv_split_for_normal_field(chars, delimiter)
end
end
csv
end
# (2) 通常のフィールドの処理
def csv_split_for_normal_field(chars, delimiter)
field = ""
while c = chars.shift
case c
when delimiter
return field
else
field.concat c # 文字列fieldの最後に文字列cを追加
end
end
field
end
# (3) `"'で始まるフィールドの処理
def csv_split_for_quoted_field(chars, delimiter)
field = ""
while c = chars.shift
case c
when '"'
c1 = chars.shift
if c1 == delimiter or c1.nil?
return field
elsif c1 == '"'
field.concat '"'
else
# (B-1) 不正フォーマット
field.concat c
field.concat c1
end
else
field.concat c
end
end
# (B-2) 不正フォーマット
field
end
__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju@rational.com <<---