vb.net – Char.IsSymbol(“*”)是假的
发布时间:2020-12-17 00:07:19 所属栏目:大数据 来源:网络整理
导读:我正在进行密码验证例程,并且很惊讶地发现VB不会将’*’视为Char.IsSymbol()检查的符号. 以下是QuickWatch的输出: char.IsSymbol("*") False Boolean MS documentation没有指定IsSymbol匹配的字符,但暗示标准数学符号包含在here中. 有没有人有匹配所有标准
我正在进行密码验证例程,并且很惊讶地发现VB不会将’*’视为Char.IsSymbol()检查的符号.
以下是QuickWatch的输出: char.IsSymbol("*") False Boolean MS documentation没有指定IsSymbol匹配的字符,但暗示标准数学符号包含在here中. 有没有人有匹配所有标准美国特殊字符的好主意?
在此上下文中为符号的字符:System.Globalization命名空间中的UnicodeCategory.MathSymbol,UnicodeCategory.CurrencySymbol,UnicodeCategory.ModifierSymbol和UnicodeCategory.OtherSymbol.这些是分别指定为Sm,Sc,Sk和So的Unicode字符.所有其他字符返回False.
来自.Net来源: internal static bool CheckSymbol(UnicodeCategory uc) { switch (uc) { case UnicodeCategory.MathSymbol: case UnicodeCategory.CurrencySymbol: case UnicodeCategory.ModifierSymbol: case UnicodeCategory.OtherSymbol: return true; default: return false; } } 或转换为VB.Net: Friend Shared Function CheckSymbol(uc As UnicodeCategory) As Boolean Select Case uc Case UnicodeCategory.MathSymbol,UnicodeCategory.ModifierSymbol,UnicodeCategory.OtherSymbol Return True Case Else Return False End Select End Function IsSymbol使用给定char的Unicode类别调用CheckSymbol. 由于*属于OtherPunctuation类(您可以使用char.GetUnicodeCategory()进行检查),因此它不被视为符号,并且该方法正确返回False. 要回答你的问题:使用char.GetUnicodeCategory()来检查角色属于哪个类别,并决定是否将它包含在你自己的逻辑中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |