From: Kazuhiro NISHIYAMA Date: 2005-10-27T17:14:36+09:00 Subject: [ruby-dev:27536] Re: [ruby-list:41402] Re: 全角スペースを区切りとした文字列分解で 西山和広です。 >>>>> On Thu, 27 Oct 2005 15:44:54 +0900 >>>>> zn@mbf.nifty.com(Kazuhiro NISHIYAMA) said: > 原因はたぶんstring.cのscan_onceで > *start = END(0)+1; > と文字の長さではなく1を足しているからだと思います。 試しにmbclenに変更してみましたが、-Keだとtestが通るように なっても、UTF-8に変換して-Kuで実行するとだめなままでした。 Index: string.c =================================================================== RCS file: /src/ruby/string.c,v retrieving revision 1.182.2.43 diff -u -p -r1.182.2.43 string.c --- string.c 17 Sep 2005 14:55:06 -0000 1.182.2.43 +++ string.c 27 Oct 2005 08:12:09 -0000 @@ -4192,7 +4192,7 @@ scan_once(str, pat, start) if (RSTRING(str)->len < END(0)) *start = END(0)+mbclen2(RSTRING(str)->ptr[END(0)],pat); else - *start = END(0)+1; + *start = END(0)+mbclen(RSTRING(str)->ptr[END(0)]); } else { *start = END(0); -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)