Checking, whether string contains only ascii.
ag0aep6g via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Feb 22 12:02:48 PST 2017
On Wednesday, 22 February 2017 at 19:26:15 UTC, berni wrote:
> In my program, I read a postscript file. Normal postscript
> files should only be composed of ascii characters, but one
> never knows what users give us. Therefore I'd like to make sure
> that the string the program read is only made up of ascii
> characters. This simplifies the code thereafter, because I then
> can assume, that codeunit==codepoint. Is there a simple way to
> do so?
>
> Here a sketch of my function:
>
>>void foo(string postscript)
>>{
>> // throw Exception, if postscript is not all ascii
>> // other stuff, assuming codeunit=codepoint
>>}
Making full use of the standard library:
----
import std.algorithm: all;
import std.ascii: isASCII;
import std.exception: enforce;
enforce(postscript.all!isASCII);
----
That checks on the code point level (because strings are ranges
of dchars). If you want to be clever, you can avoid decoding and
check on the code unit level:
----
/* other imports as above */
import std.utf: byCodeUnit;
enforce(postscript.byCodeUnit.all!isASCII);
----
Or you can do it manually, avoiding all those imports:
----
foreach (char c; postscript) if (c > 0x7F) throw new
Exception("not ASCII");
----
More information about the Digitalmars-d-learn
mailing list