我正在为我在Visual Basic .NET中构建的JSON优化解析器。我不遵循EBNF逐字记录,例如,使用匹配的数字来表示可选的正号,对于布尔值/空值,我不将匹配项限制为仅小写。但是,对于是否应该使用Char.IsDigit或NumberFormat.NativeDigits来匹配数字中的数字,我有一个疑问。
当前我使用Char.IsDigit,因为我正在迭代源代码中的每个字符,因此比较String中当前迭代的Char值更容易。但是,要检查可选的正负号,无论如何我还是使用NumberFormat类,因此我想知道检查当前迭代的字符是否在NativeDigits集合中是否有任何好处。
我可以想到的缺点是,由于我要遍历String中的每个Char,因此必须将Char转换为String以检查字符是否在NativeDigits集合中。由于字符串在VB.NET中是不可变的,因此我尝试使字符串的实例尽可能少。