当前位置:  开发笔记 > 编程语言 > 正文

.Net - 检测所需标识符是否为关键字

如何解决《.Net-检测所需标识符是否为关键字》经验,为你挑选了1个好方法。

在.net中,有没有办法检测某个单词是否是给定.net语言中的关键字?

我正在为这个项目使用一个相当简单的代码生成器,我想开始自动化它.现在我手工完成每一个,所以解决出现的任何问题都很容易.但是,一旦这种情况自动开始,我将需要一种方法来检测我需要用作标识符的单词是否是关键字.我仍然可以使用它,我只需要正确引用它.

我知道我可以简单地引用我生成的所有内容,但我想保持生成的代码很漂亮:)

我需要引用的一类例子:

vb:  Public [Class] As String = "CLASS"
c#:  public String @class = "CLASS";

Daniel LeChe.. 7

也许你正在寻找 IsValidIdentifier

[ IsValidIdentifier] return [s]仅当值符合语言规则且不与关键字冲突时才为true .

要么 CreateEscapedIdentifier

CreateEscapedIdentifier测试标识符是否与任何保留或语言关键字冲突,如果是,则返回具有特定于语言的转义码格式的等效名称

例如:

    CSharpCodeProvider csProvider = new CSharpCodeProvider();

    bool isValid1 = csProvider.IsValidIdentifier("class");
    // returns false

    string escapedId1 = csProvider.CreateEscapedIdentifier("foo");
    // escapedId1 = "foo"
    string escapedId2 = csProvider.CreateEscapedIdentifier("do");
    // escapedId2 = "@do"
    string escapedId3 = csProvider.CreateEscapedIdentifier("AndAlso");
    // escapedId3 = "AndAlso" (not reserved in c#)

    VBCodeProvider vbProvider = new VBCodeProvider();

    string escapedId4 = vbProvider.CreateEscapedIdentifier("AndAlso");
    // escapedId4  = "[AndAlso]" (reserved in VB)

似乎扩展/使用此设施以满足您的需求并不会太难.



1> Daniel LeChe..:

也许你正在寻找 IsValidIdentifier

[ IsValidIdentifier] return [s]仅当值符合语言规则且不与关键字冲突时才为true .

要么 CreateEscapedIdentifier

CreateEscapedIdentifier测试标识符是否与任何保留或语言关键字冲突,如果是,则返回具有特定于语言的转义码格式的等效名称

例如:

    CSharpCodeProvider csProvider = new CSharpCodeProvider();

    bool isValid1 = csProvider.IsValidIdentifier("class");
    // returns false

    string escapedId1 = csProvider.CreateEscapedIdentifier("foo");
    // escapedId1 = "foo"
    string escapedId2 = csProvider.CreateEscapedIdentifier("do");
    // escapedId2 = "@do"
    string escapedId3 = csProvider.CreateEscapedIdentifier("AndAlso");
    // escapedId3 = "AndAlso" (not reserved in c#)

    VBCodeProvider vbProvider = new VBCodeProvider();

    string escapedId4 = vbProvider.CreateEscapedIdentifier("AndAlso");
    // escapedId4  = "[AndAlso]" (reserved in VB)

似乎扩展/使用此设施以满足您的需求并不会太难.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有