Bug #787
closed
Time#strftime で %i は "%i" になるのに、%[EO-_] などは "%" に置換される
Added by tadf (tadayoshi funaba) over 15 years ago.
Updated about 13 years ago.
Description
=begin
$ ./ruby -e "p Time.now.strftime('%i')"
"%i"
$ ./ruby -e "p Time.now.strftime('%E')"
"%"
$ ./ruby -e "p Time.now.strftime('%-')"
"%"
一般には、まったく置換されないか、存在しないパターンでは "" に置き
換えられることが多いように思います。
=end
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:37170] [Bug #787] Time#strftime で %i は "%i" になるのに、%[EO-] などは "%" に置換される"
on Tue, 25 Nov 2008 00:24:38 +0900, tadayoshi funaba redmine@ruby-lang.org writes:
|
|Bug #787: Time#strftime で %i は "%i" になるのに、%[EO-] などは "%" に置換される
|http://redmine.ruby-lang.org/issues/show/787
%Eおよび%OはSingle Unix Specificationで修飾子として定義され
ています。ですから、%Ecとかのように使われることを期待されて
いるので、%Eで文字列が終わってしまった場合にどうなるかは、未
定義だと思います。あと、%-は%_などと同様にフラグとして用いら
れます。
ですから、これらの文字は未定義のフォーマット指定子である%iと
は同等ではないということですね。
で、これらの修飾子が不完全なまま文字列の終端が来た場合、どう
するべきなのかは議論の余地があると思います。
=end
=begin
で、これらの修飾子が不完全なまま文字列の終端が来た場合、どう
するべきなのかは議論の余地があると思います。
%i をそのまま返したり、%- が % に置換される意味はなんなのか、ということ
が気になります。
たとえば、glibc では、パターンに一致しないものはそのまま保存という方針
があったと思います。これは、エンコーディングがらみの問題になるべく中立
的に振る舞おうとするからですが、もし、そういうことに拘らないのであれば、
いっそそういったものは全部 "" に置き換えてもいいと思います。
これが重要な問題というわけではありませんが、食べるなら食べる、食べない
なら食べない、というようにしたほうがいいように思います、可能ならば。
未定義指定子があえて "%" を生成する意味はないように思うので。
%i => "%i"
%E => "%"
%Ei => "%Ei"
%10Ei => " %10Ei"
現状はこんな感じですね。
=end
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
Applied in changeset r20355.
=end
Also available in: Atom
PDF
Like0
Like0Like0Like0