On Friday, 26 July 2013 at 05:06:45 UTC, Jonathan M Davis wrote:
Unicode contains ASCII, but very few Unicode characters are ASCII, because there just aren't very many ASCII characters and there and a _ton_ of Unicode characters. The std.ascii functions return true for certain sets of ASCII characters and false for everything else. The std.uni functions return true for many Unicode characters as well. You wouldn't normally use std.ascii if you're operating on non-ASCII Unicode characters, but it ignores them if it
does run into them.

std.ascii.isWhite only cares about ASCII whitespace, which the documentation explicitly lists as the space, tab, vertical tab, form feed, carriage return, and linefeed characters. Those characters will return true. All other
characters will return false.

std.uni.isWhite returns true for all of the characters that std.ascii.isWhite does plus a whole bunch of other non-ASCII characters that the Unicode
standard considers to be whitespace.

Which function you use depends on what you're trying to do.

- Jonathan M Davis

That makes sense. I know that the first 127 unicode characters are equivalent to the 7-bit ASCII charset, but it confused me that the module is named std.ascii when it actually operates on unicode characters, I guess.

Another question, I'm not all that familiar with unicode, so what is the difference between std.uni.isNumber and std.ascii.isNumber? Am I right in thinking that std.uni.isNumber will match things outside of the basic 0..9?

Reply via email to