gpt4 book ai didi

vb.net - Char.IsSymbol ("*") 为 false

转载 作者:行者123 更新时间:2023-12-01 17:41:59 25 4
gpt4 key购买 nike

我正在研究密码验证例程,并且惊讶地发现 VB 在 Char.IsSymbol() 检查中并不将“*”视为符号。以下是 QuickWatch 的输出:

char.IsSymbol("*")  False   Boolean

MS documentation不指定 IsSymbol 匹配哪些字符,但暗示包含标准数学符号 here .

有人对匹配所有标准美国特殊字符有什么好主意吗?

最佳答案

在此上下文中作为符号的字符:UnicodeCategory.MathSymbolUnicodeCategory.CurrencySymbolUnicodeCategory.ModifierSymbolUnicodeCategory.OtherSymbol 来自 System.Globalization 命名空间。这些是分别指定为 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.CurrencySymbol, UnicodeCategory.ModifierSymbol, UnicodeCategory.OtherSymbol
Return True
Case Else
Return False
End Select
End Function

CheckSymbolIsSymbol 使用给定字符的 Unicode 类别调用。

由于 * 属于 OtherPunctuation 类别(您可以使用 char.GetUnicodeCategory() 检查),因此它不被视为符号,并且该方法正确返回False

要回答您的问题:使用 char.GetUnicodeCategory() 检查字符属于哪个类别,并决定是否将其包含在您自己的逻辑中。

关于vb.net - Char.IsSymbol ("*") 为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com