在C#中,如何检测字符是否为非ASCII字符?

Ale*_*dru 12 c# string unicode ascii char

我想在C#中检查char是否包含非ASCII字符.什么是检查特殊字符,如最好的方式?还是?

mus*_*fan 23

ASCII范围为0 - 127,因此只需检查该范围:

char c = 'a';//or whatever char you have
bool isAscii = c < 128;
Run Code Online (Sandbox Code Playgroud)

  • 对于那些想要想要的人来说,`bool isAscii = c <= sbyte.MaxValue;`. (10认同)

Mal*_*lil 23

bool HasNonASCIIChars(string str)
{
    return (System.Text.Encoding.UTF8.GetByteCount(str) != str.Length);
}
Run Code Online (Sandbox Code Playgroud)

  • 现在这是一个有趣的方式来解决这个问题。真聪明! (3认同)

Cro*_*own 12

以防万一有人遇到这个。在 dotNET6 中,有一种新方法可以检查字符是否为 ASCII 字符

public static bool IsAscii (char c);
Run Code Online (Sandbox Code Playgroud)

要解决这个问题,你可以这样写

var containsOnlyAscii = str.All(char.IsAscii);
Run Code Online (Sandbox Code Playgroud)

使用LINQAll方法。


一般来说,您可以使用这种新方法来检查单个字符

var isAscii = char.IsAscii(c);
Run Code Online (Sandbox Code Playgroud)