length of string result not as expected
jicman
cabrera at wrc.xerox.com
Tue Aug 13 20:14:40 PDT 2013
On Wednesday, 14 August 2013 at 03:00:00 UTC, Jonathan M Davis
wrote:
> On Wednesday, August 14, 2013 04:53:34 jicman wrote:
>> Greetings.
>>
>> import std.stdio;
>>
>> void main()
>> {
>> char[] str = "不良反應事件和產品客訴報告"; // 13 chinese characters...
>> writefln(str.length);
>> }
>>
>> this program returns 39. I expected to return 13. How do I know
>> the exact length of the characters that I have in a char[]
>> variable? Thanks.
>
> length gives you the length of the array, which is 39, because
> it contains 39
> chars. If you want to know the number of code points in the
> string as opposed
> to the number of code units (char is a UTF-8 code unit), then
> use
> std.range.walkLength. e.g.
>
> writeln(walkLength(str));
>
> It'll iterate through the string and count up the number of
> code points.
>
> - Jonathan M Davis
thanks, Jonathan. That looks like D2, since D1 does not have
std.range in its phobos library.
More information about the Digitalmars-d-learn
mailing list