Java.lang.Character.isUnicodeIdentifierStart()在.NET中等效

本文关键字:NET lang Character isUnicodeIdentifierStart Java | 更新日期: 2023-09-27 18:26:15

在.NET中有与Java.lang.Character.isUnicodeIdentifierStart()等效的方法吗?

Java.lang.Character.isUnicodeIdentifierStart()在.NET中等效

没有直接的方法。在大多数.NET语言中,标识符可以是任何Unicode"字母"或下划线,因此您可以很容易地将其写成:

bool IsValidIdentifierStart(char ch)
{
    return ch == '_' || char.IsLetter(ch);
}

请注意,CLR更灵活。CLS规范第8.5.1章规定:

程序集应遵循Unicode标准3.0技术报告15的附件7,该附件规定了允许启动并包含在标识符中的字符集,可在http://www.unicode.org/unicode/reports/tr15/tr15-18.html.标识符应采用Unicode规范化表格C定义的规范格式。

这允许运行时使用许多标准语言不允许使用的标识符。

您可以使用Char.IsLetter()作为Unicode标识符。标识符必须以字母开头。。。

编辑:对于下划线,IsLetter()将返回true,这是无效的,因此也应该检查它。

如果您需要Reed Copsey建议的ch == '_' || char.IsLetter(ch)以上,请查看Char.GetUnicodeCategory,它为您提供了字符的详细Unicode分类。