isAsciiString in Phobos?
Jonathan M Davis
jmdavisProg at gmx.com
Mon Oct 7 08:50:37 PDT 2013
On Monday, October 07, 2013 17:17:57 Andrej Mitrovic wrote:
> If I want to transfer some string to a C function that expects
> ascii-only string. What can I use to verify there are no non-ascii
> characters in a D string? I haven't seen anything in Phobos.
>
> I was thinking of using:
>
> bool isAscii = mystring.all!(a => a <= 0xFF);
>
> Is this safe?
>
> I'm thinking of whether a code point can consist of two code units
> such as [C1][C2], where C2 may be in the range 0 - 0xFF. I don't know
> if that's possible (not a unicode pro here..).
If you do
bool isASCII = !mystring.any!(not!isASCII)();
or
bool isASCII = !mystring.any!(a => a > 0x7F)();
then you should be good. Anything in UTF-8 127 or under is a single code unit
and is ASCII. It has to be more than 127 to be a multi-byte character. Just
look at the table on
https://en.wikipedia.org/wiki/Utf-8
It shows what each of the bytes have to look like in a UTF-8 code point for
each number of bytes in the code point.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list