[#47955] るびま記事募集:FiberとかSinatra/PadrinoとかBundlerとか — Makoto Kuwata <kwa@...>
桑田といいます。るびま編集部に入りました。
17 messages
2011/04/11
[#47956] Re: るびま記事募集:FiberとかSinatra/PadrinoとかBundlerとか
— Kiwamu Okabe <kiwamu@...>
2011/04/11
岡部と申します。いつもお世話になっております。
[#47971] Re: るびま記事募集:FiberとかSinatra/PadrinoとかBundlerとか
— Satoshi GUNJI <gunjisatoshi@...>
2011/04/14
郡司と申します。
[#47959] Ruby用のリアルタイムプロファイラ — Takahiro Sunaga <sunagae@...>
須永@ささだ研です。
5 messages
2011/04/11
[#47967] Re: CSV.read で読むとUTF-8の扱いがおかしい? — "Endo Akira" <endo4917@...>
遠藤と申します。
5 messages
2011/04/14
[#47990] String#gsub への委譲 — "5.5" <5.5@...>
5.5 です。
10 messages
2011/04/21
[#47991] Re: String#gsub への委譲
— "NARUSE, Yui" <naruse@...>
2011/04/21
2011年4月21日9:10 5.5 <5.5@moji.gr.jp>:
[#47997] lambda中のProc中のreturnの挙動について — m_takao <threewayhandshake@...>
高尾と申します。
6 messages
2011/04/22
[#48009] randの挙動 — YAGUCHI Yuya <yayugu@...>
矢口と申します
5 messages
2011/04/24
[ruby-list:48021] Re: 文字列を正規表現にマッチする部分と他の部分に分割
From:
"5.5" <5.5@...>
Date:
2011-04-30 03:58:22 UTC
List:
ruby-list #48021
5.5 です。
成瀬さん,ありがとうございます。
(11/04/29 22:51), NARUSE, Yui wrote:
> 一般論として、実際のユースケースを示した方が良いです。
> 特に新しいメソッドを提案するときには。
そうでしたね。
過去にやったことのなかから,簡潔にして説得力のあるユースケース
を作ることができるか,考えてみます。(すぐにはできないかも)
>> そこで,strscan を使う方法を考えました。
>>
>> s=StringScanner.new("ab12cd")
>>
>> result=""
>> while offset=s.exist?(/\d+/)
>> len=offset-s.matched.size
>> result<< s.peek(len).upcase unless len.zero?
>> result<< "<#{s.matched}>"
>> s.pos=s.pos+offset
>> end
>> result<< s.rest.upcase unless s.rest.empty?
>>
>> これ以上簡潔な書き方が思いつきませんでした。
>> マッチ文字列の間を取り出す手段が無いからです。
>>
>> いかにも回りくどいですし,非マッチ文字列に対する処理が
>> 二箇所に書かれていて DRY ではありません。
>
> 以下のような感じでいいんじゃないですかね
>
> require'strscan'
> ss = StringScanner.new("abc;def!ghi.jkl:")
> while r = ss.scan_until(/[;!.:]/)
> p ss.matched
> p r[0...-ss.matched_size]
> end
このスクリプトではテキストの末尾が非マッチ文字列のときの処理が抜
けていますが,やり方は分かりました。
このほうが簡潔ですね。
StringScanner 自身が r[0...-ss.matched_size] にあたるメソッドを提
供してくれればいいと思うのですが。
--
5.5@moji.gr.jp