1

Java.lang.Character.isUnicodeIdentifierStart().NET 中是否有等效的方法?

4

3 回答 3

5

没有直接的方法。在大多数 .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 定义的规范格式。

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

于 2013-08-02T21:13:43.750 回答
1

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

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

于 2013-08-02T21:13:18.517 回答
0

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

于 2013-08-02T21:16:35.343 回答