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

43

我想在C#中检查一个字符是否包含非ASCII字符。最好的方法是如何检查特殊字符,比如Ω

我想在C#中检查字符中是否包含非ASCII字符。如何检查特殊字符,例如Ω是最好的方式?

2
http://social.msdn.microsoft.com/Forums/vstudio/en-US/bcdfb967-aa97-4d26-9daa-d20829f805b9/detect-nonascii-characters - Zaki
2
你可以使用正则表达式来从C#字符串中删除非ASCII字符。 - Zaki
3个回答

52

ASCII编码范围从0到127,因此只需检查该范围:

char c = 'a';//or whatever char you have
bool isAscii = c < 128;

17
对于那些想要更加高端的人来说,bool isAscii = c <= sbyte.MaxValue; - Jeppe Stig Nielsen

51
bool HasNonASCIIChars(string str)
{
    return (System.Text.Encoding.UTF8.GetByteCount(str) != str.Length);
}

3
这是一个有趣的做法,真聪明! - Vesk

12

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

public static bool IsAscii (char c);

为了解决这个问题,你可以直接编写:
var containsOnlyAscii = str.All(char.IsAscii);

使用 LINQ 的 All 方法。


通常,您可以使用此新方法来检查单个字符。

var isAscii = char.IsAscii(c);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接