[phobos] UTF-8 string slicing

Masahiro Nakagawa repeatedly at gmail.com
Sat Aug 20 08:58:08 PDT 2011


On Sat, 20 Aug 2011 16:49:43 +0900, Jonathan M Davis <jmdavisProg at gmx.com>  
wrote:

> On Saturday, August 20, 2011 15:50:37 Masahiro Nakagawa wrote:
>> On Sat, 20 Aug 2011 05:22:38 +0900, Jonathan M Davis  
>> <jmdavisProg at gmx.com>
>>
>> wrote:
>> > On Friday, August 19, 2011 11:42 Masahiro Nakagawa wrote:
>> >> On Sat, 20 Aug 2011 02:24:41 +0900, unDEFER <undefer at gmail.com>  
>> wrote:
>> >>
>> >> [snip]
>> >>
>> >> > The fact which the next code
>> >> > ----
>> >> > writeln( arr.length );
>> >> > arr.popFront();
>> >> > writeln( arr.length );
>> >> > ----
>> >> > prints 9 after 10 for any array but for UTF-8 and UTF-16 strings
>> >> > may
>> >> > print as well 8 or lesser, seems too confusing for me.
>> >>
>> >> You can use std.algorithm.count to count the number of elements.
>> >>
>> >> assert([1,2,3].count() == 3);
>> >> assert("abc".count() == 3);
>> >> assert("あいう".count() == 3);
>> >
>> > The correct function for getting the number of elements for a range is
>> > std.ronge.walkLength. count will call its predicate (which defaults to
>> > "true")
>> > on every member of the range. walkLength, on the other hand, will call
>> > the
>> > range's length property if it has one (string and wstring don't have a
>> > length
>> > property as far as ranges are concerned, because they're ranges of
>> > dchar, not
>> > char or wchar) and simply iterates through the range, counting its
>> > elements
>> > otherwise. So, it will be more efficient to call walkLength, and  
>> that's
>> > what
>> > it's for. count is for counting the number of elements in the range
>> > which
>> > match its predicate, not for counting the number of elements in the
>> > range.
>>
>> Yes, I know.
>
> Then I don't understand why you were suggesting that he use count rather  
> than
> walkLength.

I use sometimes count because walkLength is not clear name for me(and  
short-name).
I remembered walkLength after send a reply :)


More information about the phobos mailing list