.NET сохраняет все строки как последовательность кодовых единиц UTF-16.(Это достаточно близко к «Unicode-символам» для большинства целей.)
К счастью для вас, Unicode был спроектирован таким образом, что значения ASCII отображаются на одно и то же число в Unicode, поэтому после преобразования каждого символа вцелое число, вы можете просто проверить, находится ли он в диапазоне ASCII.Обратите внимание, что вы можете использовать неявное преобразование из char
в int
- нет необходимости вызывать метод преобразования:
string text = "Here's some text including a \u00ff non-ASCII character";
foreach (char c in text)
{
int unicode = c;
Console.WriteLine(unicode < 128 ? "ASCII: {0}" : "Non-ASCII: {0}", unicode);
}